<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://www.toolsverse.com/docs/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.toolsverse.com/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maxlmus</id>
		<title>Toolsverse Knowledge Base - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.toolsverse.com/docs/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Maxlmus"/>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Special:Contributions/Maxlmus"/>
		<updated>2026-06-18T13:21:45Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.23.17</generator>

	<entry>
		<id>https://www.toolsverse.com/docs/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Main_Page"/>
				<updated>2017-10-17T17:18:32Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: links updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolsverse knowledge base ==&lt;br /&gt;
&lt;br /&gt;
=== ETL and Data Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[ETL scenario language]] &lt;br /&gt;
* [[Writing data integration and data migration scenarios]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/examples ETL Scenario Examples] &lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples Java Examples] &lt;br /&gt;
&lt;br /&gt;
=== Support Resources === &lt;br /&gt;
* [https://www.toolsverse.com/products/video-tutorials/ Video Tutorials] &lt;br /&gt;
* [https://www.toolsverse.com/case-studies/ Case Studies]&lt;br /&gt;
&lt;br /&gt;
== Products == &lt;br /&gt;
&lt;br /&gt;
=== ETL Framework ===&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/ Product page]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/features.html Features]&lt;br /&gt;
* [[Installing and Configuring ETL Framework]]&lt;br /&gt;
* [[Redistribution and managing dependencies]]&lt;br /&gt;
* [[Building Source Code]]&lt;br /&gt;
* [[Using Eclipse]]&lt;br /&gt;
* [[Running ETL Scenarios]]&lt;br /&gt;
* [[Configuration file]]&lt;br /&gt;
* [[Calling REST based Web services]]&lt;br /&gt;
* [[Calling SOAP Web services]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples/ Embedding ETL Engine]&lt;br /&gt;
* [https://www.toolsverse.com/javadoc/ JavaDoc]&lt;br /&gt;
&lt;br /&gt;
=== Data Explorer ===&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/ Product Page]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/features.html Features and Editions]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/docs/ User Guide]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2015-02-10T00:43:56Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure your source connection is set to the one linked to the GET endpoint and destinations - to the PUT or POST endpoint. &lt;br /&gt;
&lt;br /&gt;
You can use POST, PUT, GET and DELETE HTTP methods. Read more [[how to customize HTTP connection]]. &lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can customize URL using {token}. &lt;br /&gt;
&lt;br /&gt;
For example connection below points to the GET REST endpoint which requires access token:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;connection alias=&amp;quot;Some REST endpoint&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;url&amp;gt;https://host/rest/v1/data/?filter=123&amp;amp;access_token={access_token}&amp;lt;/url&amp;gt;&lt;br /&gt;
  &amp;lt;connector&amp;gt;com.toolsverse.etl.connector.json.JsonConnector&amp;lt;/connector&amp;gt;&lt;br /&gt;
  &amp;lt;transport&amp;gt;com.toolsverse.io.HttpProcessor&amp;lt;/transport&amp;gt;&lt;br /&gt;
&amp;lt;/connection&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
You will need to set access_token as a system property. Please see examples below:&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the POST request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2015-02-10T00:43:20Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure your source connection is set to the one linked to the GET endpoint and destinations - to the PUT or POST endpoint. &lt;br /&gt;
&lt;br /&gt;
You can use POST, PUT, GET and DELETE HTTP methods. Read more [[How to customize HTTP connection]]. &lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can customize URL using {token}. &lt;br /&gt;
&lt;br /&gt;
For example connection below points to the GET REST endpoint which requires access token:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;connection alias=&amp;quot;Some REST endpoint&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;url&amp;gt;https://host/rest/v1/data/?filter=123&amp;amp;access_token={access_token}&amp;lt;/url&amp;gt;&lt;br /&gt;
  &amp;lt;connector&amp;gt;com.toolsverse.etl.connector.json.JsonConnector&amp;lt;/connector&amp;gt;&lt;br /&gt;
  &amp;lt;transport&amp;gt;com.toolsverse.io.HttpProcessor&amp;lt;/transport&amp;gt;&lt;br /&gt;
&amp;lt;/connection&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
You will need to set access_token as a system property. Please see examples below:&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the POST request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2015-02-10T00:43:07Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure your source connection is set to the one linked to the GET endpoint and destinations - to the PUT or POST endpoint. &lt;br /&gt;
&lt;br /&gt;
You can use POST, PUT, GET and DELETE HTTP methods. Read more [How to customize HTTP connection]. &lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can customize URL using {token}. &lt;br /&gt;
&lt;br /&gt;
For example connection below points to the GET REST endpoint which requires access token:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;connection alias=&amp;quot;Some REST endpoint&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;url&amp;gt;https://host/rest/v1/data/?filter=123&amp;amp;access_token={access_token}&amp;lt;/url&amp;gt;&lt;br /&gt;
  &amp;lt;connector&amp;gt;com.toolsverse.etl.connector.json.JsonConnector&amp;lt;/connector&amp;gt;&lt;br /&gt;
  &amp;lt;transport&amp;gt;com.toolsverse.io.HttpProcessor&amp;lt;/transport&amp;gt;&lt;br /&gt;
&amp;lt;/connection&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
You will need to set access_token as a system property. Please see examples below:&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the POST request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2015-02-10T00:39:56Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure your source connection is set to the one linked to the GET endpoint and destinations - to the PUT or POST endpoint.&lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can customize URL using {token}. &lt;br /&gt;
&lt;br /&gt;
For example connection below points to the GET REST endpoint which requires access token:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;connection alias=&amp;quot;Some REST endpoint&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;url&amp;gt;https://host/rest/v1/data/?filter=123&amp;amp;access_token={access_token}&amp;lt;/url&amp;gt;&lt;br /&gt;
  &amp;lt;connector&amp;gt;com.toolsverse.etl.connector.json.JsonConnector&amp;lt;/connector&amp;gt;&lt;br /&gt;
  &amp;lt;transport&amp;gt;com.toolsverse.io.HttpProcessor&amp;lt;/transport&amp;gt;&lt;br /&gt;
&amp;lt;/connection&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
You will need to set access_token as a system property. Please see examples below:&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the POST request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2015-02-10T00:39:21Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure your source connection is set to the one linked to the GET endpoint and destinations - to the PUT or POST endpoint.&lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can customize URL using {token}. &lt;br /&gt;
&lt;br /&gt;
For example connection below points to the GET REST endpoint which requires access token:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;connection alias=&amp;quot;Some REST endpoint&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;url&amp;gt;https://host/rest/v1/data/?filter=123&amp;amp;access_token={access_token}.&amp;lt;/url&amp;gt;&lt;br /&gt;
  &amp;lt;connector&amp;gt;com.toolsverse.etl.connector.json.JsonConnector&amp;lt;/connector&amp;gt;&lt;br /&gt;
  &amp;lt;transport&amp;gt;com.toolsverse.io.HttpProcessor&amp;lt;/transport&amp;gt;&lt;br /&gt;
&amp;lt;/connection&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
You will need to set access_token as a system property. Please see examples below:&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the POST request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2015-02-10T00:38:35Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure your source connection is set to the one linked to the GET endpoint and destinations - to the PUT or POST endpoint.&lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can customize URL using {token}. &lt;br /&gt;
&lt;br /&gt;
For example connection below points to the GET REST endpoint which requires access token:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;connection alias=&amp;quot;Some REST endpoint&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;https://host/rest/v1/data/?filter=123&amp;amp;access_token={access_token}.&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;connector&amp;gt;com.toolsverse.etl.connector.json.JsonConnector&amp;lt;/connector&amp;gt;&lt;br /&gt;
            &amp;lt;transport&amp;gt;com.toolsverse.io.HttpProcessor&amp;lt;/transport&amp;gt;&lt;br /&gt;
        &amp;lt;/connection&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt; &lt;br /&gt;
&lt;br /&gt;
You will need to set access_token as a system property. Please see examples below:&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the POST request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_SOAP_Web_services</id>
		<title>Calling SOAP Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_SOAP_Web_services"/>
				<updated>2015-02-10T00:28:06Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports SOAP Web services over HTTP. You will need to:&lt;br /&gt;
&lt;br /&gt;
# Set source or destination connection to the one linked to the SOAP endpoint&lt;br /&gt;
# Define SOAP request in the connection CDATA attribute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;connection alias=&amp;quot;Cars&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;http://www.vendor.com/soapendpoint&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;CDATA&amp;gt;&amp;lt;![CDATA[&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:ns1=&amp;quot;http://www.vendor.com/soapendpoint/&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SOAP-ENV:Header&amp;gt;&lt;br /&gt;
    &amp;lt;ns1:AuthenticationHeader&amp;gt;&lt;br /&gt;
      &amp;lt;vendorUserId&amp;gt;{requestUserId}&amp;lt;/mktowsUserId&amp;gt;&lt;br /&gt;
      &amp;lt;vendorSignature&amp;gt;{requestSignature}&amp;lt;/requestSignature&amp;gt;&lt;br /&gt;
      &amp;lt;vendorTimestamp&amp;gt;{requestTimestamp}&amp;lt;/requestTimestamp&amp;gt;&lt;br /&gt;
    &amp;lt;/ns1:AuthenticationHeader&amp;gt;&lt;br /&gt;
  &amp;lt;/SOAP-ENV:Header&amp;gt;&lt;br /&gt;
  &amp;lt;SOAP-ENV:Body&amp;gt;&lt;br /&gt;
    &amp;lt;ns1:paramsGetMultipleCars&amp;gt;&lt;br /&gt;
      &amp;lt;leadSelector xsi:type=&amp;quot;ns1:KeySelector&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;keyType&amp;gt;MAKE&amp;lt;/keyType&amp;gt;&lt;br /&gt;
        &amp;lt;keyValues&amp;gt;&lt;br /&gt;
          &amp;lt;stringItem&amp;gt;Ford&amp;lt;/stringItem&amp;gt;&lt;br /&gt;
          &amp;lt;stringItem&amp;gt;Acura&amp;lt;/stringItem&amp;gt;&lt;br /&gt;
        &amp;lt;/keyValues&amp;gt;&lt;br /&gt;
      &amp;lt;/leadSelector&amp;gt;&lt;br /&gt;
      &amp;lt;batchSize&amp;gt;100&amp;lt;/batchSize&amp;gt;&lt;br /&gt;
    &amp;lt;/ns1:paramsGetMultipleCars&amp;gt;&lt;br /&gt;
  &amp;lt;/SOAP-ENV:Body&amp;gt;&lt;br /&gt;
&amp;lt;/SOAP-ENV:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
]]&amp;gt;&amp;lt;/CDATA&amp;gt;&lt;br /&gt;
            &amp;lt;params&amp;gt;method=post;exceptions=500;file=false;header_Content-Type=text/xml&amp;lt;/params&amp;gt;&lt;br /&gt;
            &amp;lt;connector&amp;gt;com.toolsverse.etl.connector.xml.XmlObjectConnector&amp;lt;/connector&amp;gt;&lt;br /&gt;
            &amp;lt;transport&amp;gt;com.toolsverse.io.HttpProcessor&amp;lt;/transport&amp;gt;&lt;br /&gt;
        &amp;lt;/connection&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can tokenize any part of the CDATA or URL using {token}. In the example above there are 3 tokens:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &amp;lt;vendorUserId&amp;gt;{requestUserId}&amp;lt;/mktowsUserId&amp;gt;&lt;br /&gt;
      &amp;lt;vendorSignature&amp;gt;{requestSignature}&amp;lt;/requestSignature&amp;gt;&lt;br /&gt;
      &amp;lt;vendorTimestamp&amp;gt;{requestTimestamp}&amp;lt;/requestTimestamp&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Simple example below demonstrates how to set tokens, link source to the SOAP and point and transform result web service execution into the destination:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; ?&amp;gt;&lt;br /&gt;
&amp;lt;scenario&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;SOAP&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;soap&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;driver name=&amp;quot;com.toolsverse.etl.driver.GenericFileDriver&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;beforetasks&amp;gt;&lt;br /&gt;
          &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;security&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.ScriptTask&amp;lt;/class&amp;gt;&lt;br /&gt;
               &amp;lt;code&amp;gt;&lt;br /&gt;
                    &amp;lt;![CDATA[&lt;br /&gt;
                    importPackage(java.text);&lt;br /&gt;
                    importPackage(java.util);&lt;br /&gt;
&lt;br /&gt;
                    importPackage(javax.crypto);&lt;br /&gt;
                    importPackage(javax.crypto.spec);&lt;br /&gt;
&lt;br /&gt;
                    importPackage(org.apache.commons.codec.binary);&lt;br /&gt;
&lt;br /&gt;
                    importPackage(com.toolsverse.config);&lt;br /&gt;
&lt;br /&gt;
                    var vendorUserId = SystemConfig.instance().getSystemProperty('requestUserId');&lt;br /&gt;
                    var vendorSecretKey = SystemConfig.instance().getSystemProperty('vendorSecretKey');&lt;br /&gt;
&lt;br /&gt;
                    var df = new SimpleDateFormat(&amp;quot;yyyy-MM-dd'T'HH:mm:ssZ&amp;quot;);&lt;br /&gt;
                    var text = df.format(new java.util.Date());&lt;br /&gt;
                    var requestTimestamp = text.substring(0, 22) + &amp;quot;:&amp;quot; + text.substring(22);           &lt;br /&gt;
                    var encryptString = requestTimestamp + vendorUserId;&lt;br /&gt;
             &lt;br /&gt;
                    var secretKey = new SecretKeySpec(new java.lang.String(vendorSecretKey).getBytes(), &amp;quot;HmacSHA1&amp;quot;);&lt;br /&gt;
                    var mac = Mac.getInstance(&amp;quot;HmacSHA1&amp;quot;);&lt;br /&gt;
                    mac.init(secretKey);&lt;br /&gt;
                    var rawHmac = mac.doFinal(new java.lang.String(encryptString).getBytes());&lt;br /&gt;
                    var hexChars = Hex.encodeHex(rawHmac);&lt;br /&gt;
                    var signature = new java.lang.String(hexChars); &lt;br /&gt;
&lt;br /&gt;
                    SystemConfig.instance().setSystemProperty('requestSignature', signature);&lt;br /&gt;
                    SystemConfig.instance().setSystemProperty('requestTimestamp', requestTimestamp);&lt;br /&gt;
                    SystemConfig.instance().setSystemProperty('requestUserId', vendorUserId);&lt;br /&gt;
                    ]]&amp;gt;&lt;br /&gt;
               &amp;lt;/code&amp;gt;&lt;br /&gt;
               &amp;lt;variables&amp;gt;&lt;br /&gt;
                    &amp;lt;LANG value=&amp;quot;JavaScript&amp;quot; /&amp;gt;&lt;br /&gt;
               &amp;lt;/variables&amp;gt;&lt;br /&gt;
          &amp;lt;/task&amp;gt;&lt;br /&gt;
     &amp;lt;/beforetasks&amp;gt;&lt;br /&gt;
     &amp;lt;sources&amp;gt;&lt;br /&gt;
          &amp;lt;source&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;cars&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
     &amp;lt;/sources&amp;gt;     &lt;br /&gt;
     &amp;lt;destinations&amp;gt;&lt;br /&gt;
          &amp;lt;destination &amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;cars&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
     &amp;lt;/destinations&amp;gt;&lt;br /&gt;
&amp;lt;/scenario&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_SOAP_Web_services</id>
		<title>Calling SOAP Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_SOAP_Web_services"/>
				<updated>2015-02-10T00:24:40Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports SOAP Web services over HTTP. You will need to:&lt;br /&gt;
&lt;br /&gt;
# Set source or destination connection to the one linked to the SOAP endpoint&lt;br /&gt;
# Define SOAP request in the connection CDATA attribute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;connection alias=&amp;quot;Cars&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;http://www.vendor.com/soapendpoint&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;CDATA&amp;gt;&amp;lt;![CDATA[&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:ns1=&amp;quot;http://www.vendor.com/soapendpoint/&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SOAP-ENV:Header&amp;gt;&lt;br /&gt;
    &amp;lt;ns1:AuthenticationHeader&amp;gt;&lt;br /&gt;
      &amp;lt;vendorUserId&amp;gt;{requestUserId}&amp;lt;/mktowsUserId&amp;gt;&lt;br /&gt;
      &amp;lt;vendorSignature&amp;gt;{requestSignature}&amp;lt;/requestSignature&amp;gt;&lt;br /&gt;
      &amp;lt;vendorTimestamp&amp;gt;{requestTimestamp}&amp;lt;/requestTimestamp&amp;gt;&lt;br /&gt;
    &amp;lt;/ns1:AuthenticationHeader&amp;gt;&lt;br /&gt;
  &amp;lt;/SOAP-ENV:Header&amp;gt;&lt;br /&gt;
  &amp;lt;SOAP-ENV:Body&amp;gt;&lt;br /&gt;
    &amp;lt;ns1:paramsGetMultipleCars&amp;gt;&lt;br /&gt;
      &amp;lt;leadSelector xsi:type=&amp;quot;ns1:KeySelector&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;keyType&amp;gt;MAKE&amp;lt;/keyType&amp;gt;&lt;br /&gt;
        &amp;lt;keyValues&amp;gt;&lt;br /&gt;
          &amp;lt;stringItem&amp;gt;Ford&amp;lt;/stringItem&amp;gt;&lt;br /&gt;
          &amp;lt;stringItem&amp;gt;Acura&amp;lt;/stringItem&amp;gt;&lt;br /&gt;
        &amp;lt;/keyValues&amp;gt;&lt;br /&gt;
      &amp;lt;/leadSelector&amp;gt;&lt;br /&gt;
      &amp;lt;batchSize&amp;gt;100&amp;lt;/batchSize&amp;gt;&lt;br /&gt;
    &amp;lt;/ns1:paramsGetMultipleCars&amp;gt;&lt;br /&gt;
  &amp;lt;/SOAP-ENV:Body&amp;gt;&lt;br /&gt;
&amp;lt;/SOAP-ENV:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
]]&amp;gt;&amp;lt;/CDATA&amp;gt;&lt;br /&gt;
            &amp;lt;params&amp;gt;method=post;exceptions=500;file=false;header_Content-Type=text/xml&amp;lt;/params&amp;gt;&lt;br /&gt;
            &amp;lt;connector&amp;gt;com.toolsverse.etl.connector.xml.XmlObjectConnector&amp;lt;/connector&amp;gt;&lt;br /&gt;
            &amp;lt;transport&amp;gt;com.toolsverse.io.HttpProcessor&amp;lt;/transport&amp;gt;&lt;br /&gt;
        &amp;lt;/connection&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can tokenize any part of the CDATA or URL using {token}. In the example above there are 3 tokens:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
      &amp;lt;vendorUserId&amp;gt;{requestUserId}&amp;lt;/mktowsUserId&amp;gt;&lt;br /&gt;
      &amp;lt;vendorSignature&amp;gt;{requestSignature}&amp;lt;/requestSignature&amp;gt;&lt;br /&gt;
      &amp;lt;vendorTimestamp&amp;gt;{requestTimestamp}&amp;lt;/requestTimestamp&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_SOAP_Web_services</id>
		<title>Calling SOAP Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_SOAP_Web_services"/>
				<updated>2015-02-10T00:22:57Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports SOAP Web services over HTTP. You will need to:&lt;br /&gt;
&lt;br /&gt;
# Set source or destination connection to the one linked to the SOAP endpoint&lt;br /&gt;
# Define SOAP request in the connection CDATA attribute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;connection alias=&amp;quot;Cars&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;http://www.vendor.com/soapendpoint&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;CDATA&amp;gt;&amp;lt;![CDATA[&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:ns1=&amp;quot;http://www.vendor.com/soapendpoint/&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SOAP-ENV:Header&amp;gt;&lt;br /&gt;
    &amp;lt;ns1:AuthenticationHeader&amp;gt;&lt;br /&gt;
      &amp;lt;vendorUserId&amp;gt;{requestUserId}&amp;lt;/mktowsUserId&amp;gt;&lt;br /&gt;
      &amp;lt;vendorSignature&amp;gt;{requestSignature}&amp;lt;/requestSignature&amp;gt;&lt;br /&gt;
      &amp;lt;vendorTimestamp&amp;gt;{requestTimestamp}&amp;lt;/requestTimestamp&amp;gt;&lt;br /&gt;
    &amp;lt;/ns1:AuthenticationHeader&amp;gt;&lt;br /&gt;
  &amp;lt;/SOAP-ENV:Header&amp;gt;&lt;br /&gt;
  &amp;lt;SOAP-ENV:Body&amp;gt;&lt;br /&gt;
    &amp;lt;ns1:paramsGetMultipleCars&amp;gt;&lt;br /&gt;
      &amp;lt;leadSelector xsi:type=&amp;quot;ns1:KeySelector&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;keyType&amp;gt;MAKE&amp;lt;/keyType&amp;gt;&lt;br /&gt;
        &amp;lt;keyValues&amp;gt;&lt;br /&gt;
          &amp;lt;stringItem&amp;gt;Ford&amp;lt;/stringItem&amp;gt;&lt;br /&gt;
          &amp;lt;stringItem&amp;gt;Acura&amp;lt;/stringItem&amp;gt;&lt;br /&gt;
        &amp;lt;/keyValues&amp;gt;&lt;br /&gt;
      &amp;lt;/leadSelector&amp;gt;&lt;br /&gt;
      &amp;lt;batchSize&amp;gt;100&amp;lt;/batchSize&amp;gt;&lt;br /&gt;
    &amp;lt;/ns1:paramsGetMultipleCars&amp;gt;&lt;br /&gt;
  &amp;lt;/SOAP-ENV:Body&amp;gt;&lt;br /&gt;
&amp;lt;/SOAP-ENV:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
]]&amp;gt;&amp;lt;/CDATA&amp;gt;&lt;br /&gt;
            &amp;lt;params&amp;gt;method=post;exceptions=500;file=false;header_Content-Type=text/xml&amp;lt;/params&amp;gt;&lt;br /&gt;
            &amp;lt;connector&amp;gt;com.toolsverse.etl.connector.xml.XmlObjectConnector&amp;lt;/connector&amp;gt;&lt;br /&gt;
            &amp;lt;transport&amp;gt;com.toolsverse.io.HttpProcessor&amp;lt;/transport&amp;gt;&lt;br /&gt;
        &amp;lt;/connection&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_SOAP_Web_services</id>
		<title>Calling SOAP Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_SOAP_Web_services"/>
				<updated>2015-02-10T00:22:04Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports SOAP Web services over HTTP. You will need to:&lt;br /&gt;
&lt;br /&gt;
# Set source or destination connection to the one linked to the SOAP endpoint&lt;br /&gt;
# Define SOAP request in the connection CDATA attribute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;connection alias=&amp;quot;Cars&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;http://www.vendor.com/soapendpoint&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;CDATA&amp;gt;&amp;lt;![CDATA[&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:ns1=&amp;quot;http://www.vendor.com/soapendpoint/&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SOAP-ENV:Header&amp;gt;&lt;br /&gt;
    &amp;lt;ns1:AuthenticationHeader&amp;gt;&lt;br /&gt;
      &amp;lt;vendorUserId&amp;gt;{requestUserId}&amp;lt;/mktowsUserId&amp;gt;&lt;br /&gt;
      &amp;lt;vendorSignature&amp;gt;{requestSignature}&amp;lt;/requestSignature&amp;gt;&lt;br /&gt;
      &amp;lt;vendorTimestamp&amp;gt;{requestTimestamp}&amp;lt;/requestTimestamp&amp;gt;&lt;br /&gt;
    &amp;lt;/ns1:AuthenticationHeader&amp;gt;&lt;br /&gt;
  &amp;lt;/SOAP-ENV:Header&amp;gt;&lt;br /&gt;
  &amp;lt;SOAP-ENV:Body&amp;gt;&lt;br /&gt;
    &amp;lt;ns1:paramsGetMultipleCars&amp;gt;&lt;br /&gt;
      &amp;lt;leadSelector xsi:type=&amp;quot;ns1:KeySelector&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;keyType&amp;gt;MAKE&amp;lt;/keyType&amp;gt;&lt;br /&gt;
        &amp;lt;keyValues&amp;gt;&lt;br /&gt;
          &amp;lt;stringItem&amp;gt;Ford&amp;lt;/stringItem&amp;gt;&lt;br /&gt;
          &amp;lt;stringItem&amp;gt;Acura&amp;lt;/stringItem&amp;gt;&lt;br /&gt;
        &amp;lt;/keyValues&amp;gt;&lt;br /&gt;
      &amp;lt;/leadSelector&amp;gt;&lt;br /&gt;
      &amp;lt;batchSize&amp;gt;100&amp;lt;/batchSize&amp;gt;&lt;br /&gt;
    &amp;lt;/ns1:paramsGetMultipleCars&amp;gt;&lt;br /&gt;
  &amp;lt;/SOAP-ENV:Body&amp;gt;&lt;br /&gt;
&amp;lt;/SOAP-ENV:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
]]&amp;gt;&amp;lt;/CDATA&amp;gt;&lt;br /&gt;
            &amp;lt;params&amp;gt;method=post;exceptions=500;file=false;header_Content-Type=text/xml&amp;lt;/params&amp;gt;&lt;br /&gt;
            &amp;lt;connector&amp;gt;com.toolsverse.etl.connector.xml.XmlObjectConnector&amp;lt;/connector&amp;gt;&lt;br /&gt;
            &amp;lt;transport&amp;gt;com.toolsverse.io.HttpProcessor&amp;lt;/transport&amp;gt;&lt;br /&gt;
        &amp;lt;/connection&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_SOAP_Web_services</id>
		<title>Calling SOAP Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_SOAP_Web_services"/>
				<updated>2015-02-10T00:21:15Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: Created page with &amp;quot;The ETL Framework natively supports SOAP Web services over HTTP. You will need to:  # Set source or destination connection to the one linked to the SOAP endpoint # Define SOAP...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports SOAP Web services over HTTP. You will need to:&lt;br /&gt;
&lt;br /&gt;
# Set source or destination connection to the one linked to the SOAP endpoint&lt;br /&gt;
# Define SOAP request in the connection CDATA attribute&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;connection alias=&amp;quot;Cars&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;url&amp;gt;{soapendpoint}&amp;lt;/url&amp;gt;&lt;br /&gt;
            &amp;lt;CDATA&amp;gt;&amp;lt;![CDATA[&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;SOAP-ENV:Envelope xmlns:SOAP-ENV=&amp;quot;http://schemas.xmlsoap.org/soap/envelope/&amp;quot; xmlns:ns1=&amp;quot;http://www.vendor.com/soapendpoint/&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;SOAP-ENV:Header&amp;gt;&lt;br /&gt;
    &amp;lt;ns1:AuthenticationHeader&amp;gt;&lt;br /&gt;
      &amp;lt;vendorUserId&amp;gt;{requestUserId}&amp;lt;/mktowsUserId&amp;gt;&lt;br /&gt;
      &amp;lt;vendorSignature&amp;gt;{requestSignature}&amp;lt;/requestSignature&amp;gt;&lt;br /&gt;
      &amp;lt;vendorTimestamp&amp;gt;{requestTimestamp}&amp;lt;/requestTimestamp&amp;gt;&lt;br /&gt;
    &amp;lt;/ns1:AuthenticationHeader&amp;gt;&lt;br /&gt;
  &amp;lt;/SOAP-ENV:Header&amp;gt;&lt;br /&gt;
  &amp;lt;SOAP-ENV:Body&amp;gt;&lt;br /&gt;
    &amp;lt;ns1:paramsGetMultipleCars&amp;gt;&lt;br /&gt;
      &amp;lt;leadSelector xsi:type=&amp;quot;ns1:KeySelector&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;keyType&amp;gt;MAKE&amp;lt;/keyType&amp;gt;&lt;br /&gt;
        &amp;lt;keyValues&amp;gt;&lt;br /&gt;
          &amp;lt;stringItem&amp;gt;Ford&amp;lt;/stringItem&amp;gt;&lt;br /&gt;
          &amp;lt;stringItem&amp;gt;Acura&amp;lt;/stringItem&amp;gt;&lt;br /&gt;
        &amp;lt;/keyValues&amp;gt;&lt;br /&gt;
      &amp;lt;/leadSelector&amp;gt;&lt;br /&gt;
      &amp;lt;batchSize&amp;gt;100&amp;lt;/batchSize&amp;gt;&lt;br /&gt;
    &amp;lt;/ns1:paramsGetMultipleCars&amp;gt;&lt;br /&gt;
  &amp;lt;/SOAP-ENV:Body&amp;gt;&lt;br /&gt;
&amp;lt;/SOAP-ENV:Envelope&amp;gt;&lt;br /&gt;
&lt;br /&gt;
]]&amp;gt;&amp;lt;/CDATA&amp;gt;&lt;br /&gt;
            &amp;lt;params&amp;gt;method=post;exceptions=500;file=false;header_Content-Type=text/xml&amp;lt;/params&amp;gt;&lt;br /&gt;
            &amp;lt;connector&amp;gt;com.toolsverse.etl.connector.xml.XmlObjectConnector&amp;lt;/connector&amp;gt;&lt;br /&gt;
            &amp;lt;transport&amp;gt;com.toolsverse.io.HttpProcessor&amp;lt;/transport&amp;gt;&lt;br /&gt;
        &amp;lt;/connection&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2015-02-09T13:44:35Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure sources are linked to the GET endpoints and destinations - to the PUT or POST endpoints.&lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can include access tokens into the endpoint URLs. Example: https://host/rest/v1/data/?filter=123&amp;amp;access_token={access_token}. You will need to set access_token as a system property. Please see examples below:&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the POST request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Main_Page"/>
				<updated>2015-02-09T13:44:16Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolsverse knowledge base ==&lt;br /&gt;
&lt;br /&gt;
=== ETL and Data Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[ETL scenario language]] &lt;br /&gt;
* [[Writing data integration and data migration scenarios]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/examples ETL Scenario Examples] &lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples Java Examples] &lt;br /&gt;
&lt;br /&gt;
=== Support Resources === &lt;br /&gt;
* [https://www.toolsverse.com/products/video-tutorials/ Video Tutorials] &lt;br /&gt;
* [https://www.toolsverse.com/products/case-studies/ Case Studies]&lt;br /&gt;
&lt;br /&gt;
== Products == &lt;br /&gt;
&lt;br /&gt;
=== ETL Framework ===&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/ Product page]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/feature-list.shtml Features]&lt;br /&gt;
* [[Installing and Configuring ETL Framework]]&lt;br /&gt;
* [[Redistribution and managing dependencies]]&lt;br /&gt;
* [[Building Source Code]]&lt;br /&gt;
* [[Using Eclipse]]&lt;br /&gt;
* [[Running ETL Scenarios]]&lt;br /&gt;
* [[Configuration file]]&lt;br /&gt;
* [[Calling REST based Web services]]&lt;br /&gt;
* [[Calling SOAP Web services]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples/ Embedding ETL Engine]&lt;br /&gt;
* [https://www.toolsverse.com/javadoc/ JavaDoc]&lt;br /&gt;
&lt;br /&gt;
=== Data Explorer ===&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/ Product Page]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/feature-list.shtml Features and Editions]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/docs/ User Guide]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2015-02-09T13:43:28Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure sources are linked to the GET endpoints and destinations - to the PUT or POST endpoints.&lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can include access tokens into the endpoint URLs. Example: https://host/rest/v1/data/?filter=123&amp;amp;access_token={access_token}. You will need to set access_token as a system property. Please see examples below:&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the PUT request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Installing_and_Configuring_ETL_Framework</id>
		<title>Installing and Configuring ETL Framework</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Installing_and_Configuring_ETL_Framework"/>
				<updated>2015-02-09T13:40:59Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Downloading ==&lt;br /&gt;
&lt;br /&gt;
Look for clearly marked ETL Framework downloads. On Windows and OS X ETL Framework can be downloaded as an installer. Use archive downloads for other operating systems.&lt;br /&gt;
&lt;br /&gt;
== Installing ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to install ETL Framework: using installer or extracting files from the archive. &lt;br /&gt;
&lt;br /&gt;
When using installer just execute it and follow instructions on the screen.&lt;br /&gt;
&lt;br /&gt;
OS X installer is offered in a form of self-extracting DMG file. When prompted drag and drop ETL Framework folder to the Applications.&lt;br /&gt;
&lt;br /&gt;
When installing from archive you will need to manually extract files using utility provided by operating system. All files are contained in the enclosing folder named etl-version.&lt;br /&gt;
&lt;br /&gt;
Installing from archive will not add any entries to the Start menu, add desktop launchers or register the software in the registry.&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
&lt;br /&gt;
ETL Framework comes pre-configured to provide highest levels of performance and compatibility.&lt;br /&gt;
&lt;br /&gt;
Framework requires a valid not expired license. Licenses are located under  ETL_FRAMEWORK_HOME\license folder (*.lic files) or under ETL_FRAMEWORK_HOME\lib (*.jar files).&lt;br /&gt;
&lt;br /&gt;
'''Note''': ETL Framework comes with a 20-days evaluation license. It will expire after 20 days since the first use. You can a buy a commercial license which will never expire. License can be delivered as a lic or jar file. Using jars for licenses decreases dependency on external folders.  &lt;br /&gt;
&lt;br /&gt;
You can read more about licensing [http://www.toolsverse.com/support/faq/ here]. &lt;br /&gt;
&lt;br /&gt;
=== Changing configuration properties ===&lt;br /&gt;
&lt;br /&gt;
ETL framework uses etl.properties file located under ETL_FRAMEWORK_HOME/config folder to load configuration properties from. You can change default name of the configuration file by setting property config.file.name. Example: &amp;lt;pre&amp;gt;-Dconfig.file.name=c:/etl/config/test.properties.&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If file does not exist framework will use default values.&lt;br /&gt;
&lt;br /&gt;
You can add any property to the file using format property_name=value. You can also completely ignore configuration file and set properties programmatically using System.setProperty(name, value) or by passing -D props to the Java program.&lt;br /&gt;
&lt;br /&gt;
Some of the properties:&lt;br /&gt;
* network.appupdateurl - the URL used to call auto-update Web service&lt;br /&gt;
* network.appserverurl - the URL used to call ETL Web service&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.appserverurl=http://localhost:8080/dataexplorer/ide&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
# never change properties below&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.name=etlprocess&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can pass XML configuration file name (or any other -D property) as a command line argument:&lt;br /&gt;
&amp;lt;pre&amp;gt;-Detl.config.name=import_data_config.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring HTTP Proxy ===&lt;br /&gt;
&lt;br /&gt;
Use your properties file (the default is ETL_FRAMEWORK_HOME/config/etl.properties) to configure HTTP proxy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.httpproxyhost=&lt;br /&gt;
network.httpproxyport=&lt;br /&gt;
network.httpproxyuser=&lt;br /&gt;
network.httpproxypassword=&lt;br /&gt;
# none, http, https, socks&lt;br /&gt;
network.httpproxytype=&lt;br /&gt;
# comma separated list of hosts to exclude, for example localhost,198.168.1.1. Can leave it blank &lt;br /&gt;
network.httpproxyexclude=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring EMail Notifications ===&lt;br /&gt;
&lt;br /&gt;
If you are going to use email notifications you need to configure mailer. Use your properties file (the default is ETL_FRAMEWORK_HOME/config/etl.properties):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# example: smtp.mail.host=smtp.gmail.com                    &lt;br /&gt;
smtp.mail.host=&lt;br /&gt;
# example: smtp.mail.port=587 &lt;br /&gt;
smtp.mail.port=&lt;br /&gt;
# example: mailer@gmail.com&lt;br /&gt;
smtp.mail.user=&lt;br /&gt;
# example: passwd&lt;br /&gt;
smtp.mail.password=&lt;br /&gt;
# example: ops@gmail.com&lt;br /&gt;
smtp.mail.to=&lt;br /&gt;
# example: robot@gmail.com&lt;br /&gt;
smtp.mail.from=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Changing JVM Parameters ===&lt;br /&gt;
&lt;br /&gt;
# Open ETL_FRAMEWORK_HOME\etlappstart.properties in your favorite text editor&lt;br /&gt;
# Change line containing app.vm.options&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
=== Changing Logging Parameters ===&lt;br /&gt;
&lt;br /&gt;
# Open ETL_FRAMEWORK_HOME\config\log4j.properties in your favorite text editor&lt;br /&gt;
# Make a change&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
=== Adding JDBC drivers ===&lt;br /&gt;
&lt;br /&gt;
Each copy of the ETL Framework comes with the following JDBC drivers:&lt;br /&gt;
&lt;br /&gt;
* DB2&lt;br /&gt;
* Informix&lt;br /&gt;
* Microsoft SQL Server&lt;br /&gt;
* Sybase Advanced Server&lt;br /&gt;
* MySQL&lt;br /&gt;
* Oracle&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Java DB (Derby)&lt;br /&gt;
&lt;br /&gt;
They are located in the ETL_FRAMEWORK_HOME\jdbc folder. ETL Framework automatically recognizes (on start-up) and dynamically loads (when needed) jdbc drivers under this folder.&lt;br /&gt;
&lt;br /&gt;
To install new jdbc driver just add a sub folder under ETL_FRAMEWORK_HOME\jdbc and put all required files there. Restart Data Explorer. &lt;br /&gt;
&lt;br /&gt;
Alternatively, since JDBC drivers are just jar files you can simply put them in the ETL_FRAMEWORK_HOME\lib folder and they will be automatically loaded and added to the classpath.&lt;br /&gt;
&lt;br /&gt;
== Redistribution and managing dependencies ==&lt;br /&gt;
&lt;br /&gt;
Configure ETL framework the way you like, exclude all unneeded components. You can find redistribution list and recommendations how to manage dependencies [[Redistribution and managing dependencies|here]].&lt;br /&gt;
&lt;br /&gt;
== Checking for updates ==&lt;br /&gt;
&lt;br /&gt;
ETL Framework can check for new version and update itself if new version exists.&lt;br /&gt;
&lt;br /&gt;
To check for new new version run ETL framework executable with -v parameter. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\projects\toolsverse\java\dist\etl&amp;gt;etl.exe -v&lt;br /&gt;
Toolsverse Etl Framework 4.0-19862. Use -? for help.&lt;br /&gt;
&lt;br /&gt;
Checking for updates...&lt;br /&gt;
Update status: new version available&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To auto update ETL framework run executable with -u parameter. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\projects\toolsverse\java\dist\etl&amp;gt;etl.exe -u&lt;br /&gt;
Toolsverse Etl Framework 4.0-19862. Use -? for help.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manually updating ==&lt;br /&gt;
&lt;br /&gt;
You can update framework to the new version manually:&lt;br /&gt;
&lt;br /&gt;
# Download update&lt;br /&gt;
# Replace exiting files on files from the update&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies</id>
		<title>Redistribution and managing dependencies</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies"/>
				<updated>2015-02-08T23:47:06Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redistribution list ===&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__ &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Folder !! File !! Required !! Needed for || Depends on&lt;br /&gt;
|-&lt;br /&gt;
| '''home''' || || '''Yes''' || Root folder || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.exe || No || Windows executable  ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.app || No || Mac application bundle || &lt;br /&gt;
|-&lt;br /&gt;
| || etl.sh || No || Unix/Linux shell script ||&lt;br /&gt;
|-&lt;br /&gt;
| || etlappstart.properties || No || JVM properties ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.jar || '''Yes''' || Main executable jar ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\config''' || || No || Default configuration folder ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.properties || No || Configuration properties || &lt;br /&gt;
|-&lt;br /&gt;
| || etl_config.xml || No || Default [[Configuration_file|ETL configuration file]]  ||&lt;br /&gt;
|-&lt;br /&gt;
| || log4j.properties || No || Log configuration  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\license''' || || No || Folder for licenses ||&lt;br /&gt;
|-&lt;br /&gt;
| || *.lic || No || Licenses (ETL framework will also look at license.jar under home\lib folder) || &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data''' || || No || Default folder for data ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\scenario''' || || No || Default folder for ETL scenarios || &lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\schema''' || || No || Default folder for XLT schema files || &lt;br /&gt;
|-&lt;br /&gt;
| || dataset2webrowset.xsl || No || XSL schema file for Toolseverse XML dataset to [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || webrowset2dataset.xsl || No || XSL schema file for [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML to Toolseverse XML dataset transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || xmldataset.xsd || No || Schema file for Toolsverse XML dataset file format ||  &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\lib''' || || No || Folder for core and third party jar files. Files from this folder automatically added to the classpath ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr-3.0.1.jar || '''Yes'''|| Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-beanutils-1.9.1.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-codec-1.6.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-collections4-4.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-dbcp-1.4.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-logging-1.1.3.jar  || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-math3-3.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-net-2.0.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-pool-1.5.4.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || dom4j-1.6.1.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-cache-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpcore-4.3.2.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpmime-4.3.3.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javassist.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || json-io.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || log4j-1.2.16.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || rsyntaxtextarea.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || RSyntaxTextArea.License.txt || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || saxon9he.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-common.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-sql.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-driver.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-metadata.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-io.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-license.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-mvc.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-security.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-service.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-storage.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-updater.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || derby.jar || No || Derby DB JDBC driver ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || iText-4.2.0-com.itextpdf.jar || No || Read and write PDF files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.json-1.0.4.jar || No || Read and write JSON files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.mail.jar  || No || Send emails ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || jsch-0.1.43.jar  || No || SFTP client ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-schemas-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || servlet-api.jar || No || Required if you are going to call Web services  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || socks.jar || No || Socks proxy used together with FTP  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\plugin''' || || No || Folder for plugins. In other to use files in this folder you must have a valid not expired license ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-excel.jar || No || Required if you are going to read and write Excel files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-html.jar || No || Required if you are going to read and write HTML files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-json.jar || No || Required if you are going to read and write JSON files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-pdf.jar || No || Required if you are going to read and write PDF files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-text.jar || No || Required if you are going to read and write CVS and fixed-length files || toolsverse-etl-connector-json.jar, toolsverse-etl-connector-xml.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-xml.jar || No || Required if you are going to read and write XML files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-db2.jar || No || Required if you are going to work with DB2 databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-informix.jar || No || Required if you are going to work with Informix databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-oracle.jar || No || Required if you are going to work with Oracle databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-mysql.jar || No || Required if you are going to work with MySQL databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-postgres.jar || No || Required if you are going to work with Postgres databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-sybase.jar || No || Required if you are going to work with Sybase ASE databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\jdbc''' || || No || Default folder for [[Installing_and_Configuring_ETL_Framework|JDBC drivers]] ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
home&lt;br /&gt;
   etl.exe&lt;br /&gt;
   etl.app&lt;br /&gt;
   etl.jar&lt;br /&gt;
   etl.sh&lt;br /&gt;
   etlappstart.properties &lt;br /&gt;
   config&lt;br /&gt;
      etl.properties&lt;br /&gt;
      etl_config.xml&lt;br /&gt;
      log4j.properties&lt;br /&gt;
   license&lt;br /&gt;
      *.lic&lt;br /&gt;
   data&lt;br /&gt;
      scenario&lt;br /&gt;
      schema&lt;br /&gt;
         dataset2webrowset.xsl&lt;br /&gt;
         webrowset2dataset.xsl&lt;br /&gt;
         xmldataset.xsd&lt;br /&gt;
   lib	&lt;br /&gt;
      antlr-3.0.1.jar                   &lt;br /&gt;
      antlr.jar                         &lt;br /&gt;
      commons-beanutils-1.9.1.jar          &lt;br /&gt;
      commons-codec-1.6.jar                &lt;br /&gt;
      commons-collections4-4.0.jar         &lt;br /&gt;
      commons-dbcp-1.4.jar                 &lt;br /&gt;
      commons-logging-1.1.3.jar            &lt;br /&gt;
      commons-math3-3.0.jar                &lt;br /&gt;
      commons-net-2.0.jar                  	&lt;br /&gt;
      commons-pool-1.5.4.jar            &lt;br /&gt;
      derby.jar                         &lt;br /&gt;
      dom4j-1.6.1.jar                   &lt;br /&gt;
      httpclient-4.3.3.jar              &lt;br /&gt;
      httpclient-cache-4.3.3.jar        &lt;br /&gt;
      httpcore-4.3.2.jar                &lt;br /&gt;
      httpmime-4.3.3.jar                &lt;br /&gt;
      iText-4.2.0-com.itextpdf.jar      &lt;br /&gt;
      javassist.jar                     &lt;br /&gt;
      javax.json-1.0.4.jar              &lt;br /&gt;
      javax.mail.jar                    &lt;br /&gt;
      jsch-0.1.43.jar                   &lt;br /&gt;
      json-io.jar                       &lt;br /&gt;
      log4j-1.2.16.jar                  &lt;br /&gt;
      poi-3.8-20120326.jar              &lt;br /&gt;
      poi-ooxml-3.8-20120326.jar        &lt;br /&gt;
      poi-ooxml-schemas-3.8-20120326.jar&lt;br /&gt;
      rsyntaxtextarea.jar               &lt;br /&gt;
      RSyntaxTextArea.License.txt       &lt;br /&gt;
      saxon9he.jar                      &lt;br /&gt;
      servlet-api.jar                   &lt;br /&gt;
      socks.jar                         &lt;br /&gt;
      toolsverse-core.jar               &lt;br /&gt;
      toolsverse-etl-aliasreader.jar    &lt;br /&gt;
      toolsverse-etl-common.jar         &lt;br /&gt;
      toolsverse-etl-connector-sql.jar  &lt;br /&gt;
      toolsverse-etl-connector.jar      &lt;br /&gt;
      toolsverse-etl-core.jar           &lt;br /&gt;
      toolsverse-etl-driver.jar         &lt;br /&gt;
      toolsverse-etl-metadata.jar       &lt;br /&gt;
      toolsverse-io.jar                 &lt;br /&gt;
      toolsverse-license.jar            &lt;br /&gt;
      toolsverse-mvc.jar                &lt;br /&gt;
      toolsverse-security.jar           &lt;br /&gt;
      toolsverse-service.jar            &lt;br /&gt;
      toolsverse-storage.jar            &lt;br /&gt;
      toolsverse-updater.jar            &lt;br /&gt;
      xmlbeans-2.3.0.jar                &lt;br /&gt;
   plugin&lt;br /&gt;
      toolsverse-etl-connector-excel.jar&lt;br /&gt;
      toolsverse-etl-connector-html.jar &lt;br /&gt;
      toolsverse-etl-connector-json.jar &lt;br /&gt;
      toolsverse-etl-connector-pdf.jar  &lt;br /&gt;
      toolsverse-etl-connector-text.jar &lt;br /&gt;
      toolsverse-etl-connector-xml.jar  &lt;br /&gt;
      toolsverse-etl-db2.jar            &lt;br /&gt;
      toolsverse-etl-informix.jar       &lt;br /&gt;
      toolsverse-etl-mysql.jar          &lt;br /&gt;
      toolsverse-etl-oracle.jar         &lt;br /&gt;
      toolsverse-etl-postgres.jar       &lt;br /&gt;
      toolsverse-etl-sqlserver.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Managing dependencies, files and folders ===&lt;br /&gt;
&lt;br /&gt;
Files and folders marked as '''required''' must exist in order for framework to work. Others are optional. &lt;br /&gt;
&lt;br /&gt;
Framework is tested with the particular versions of the third party libraries (see redistribution list). It is likely framework will work with more recent versions than with older versions.&lt;br /&gt;
&lt;br /&gt;
Jars under '''lib''' and '''plugin''' folders are automatically added to the classpath on start-up if there is an available license. Only commercial components of the ETL framework require license. &lt;br /&gt;
&lt;br /&gt;
You can reduce number of folders ETL framework depends on:&lt;br /&gt;
* Move all files from the '''plugin''' folder to '''lib'''.&lt;br /&gt;
* Package existing licenses (*.lic files) in the '''license''' folder into jar file and copy jar into '''lib''' folder. Name of the jar file doesn't matter but lic files must be located in the '''com/toolsverse/license''' folder inside jar.&lt;br /&gt;
* Files in the '''config''' folder and '''config''' folder itself are not required. You can pass properties to the framework using -Dproperty_name=value. &lt;br /&gt;
&lt;br /&gt;
Framework uses '''HOME/data/''' folder for temporary files, scripts and data files. If folder does not exist it is automatically created.  &lt;br /&gt;
&lt;br /&gt;
By default framework is looking for ETL scenarios in the '''HOME/data/scenario folder'''. If you want to change base folder for scenarios use -D property '''scenario.path'''.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/config/SystemConfig.java how ETL frameworks uses system folders.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/etl/core/config/EtlConfig.java how ETL frameworks uses ETL specific folders.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies</id>
		<title>Redistribution and managing dependencies</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies"/>
				<updated>2015-02-08T23:46:42Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redistribution list ===&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__ &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Folder !! File !! Required !! Needed for || Depends on&lt;br /&gt;
|-&lt;br /&gt;
| '''home''' || || '''Yes''' || Root folder || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.exe || No || Windows executable  ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.app || No || Mac application bundle || &lt;br /&gt;
|-&lt;br /&gt;
| || etl.sh || No || Unix/Linux shell script ||&lt;br /&gt;
|-&lt;br /&gt;
| || etlappstart.properties || No || JVM properties ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.jar || '''Yes''' || Main executable jar ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\config''' || || No || Default configuration folder ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.properties || No || Configuration properties || &lt;br /&gt;
|-&lt;br /&gt;
| || etl_config.xml || No || Default [[Configuration_file|ETL configuration file]]  ||&lt;br /&gt;
|-&lt;br /&gt;
| || log4j.properties || No || Log configuration  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\license''' || || No || Folder for licenses ||&lt;br /&gt;
|-&lt;br /&gt;
| || *.lic || No || Licenses (ETL framework will also look at license.jar under home\lib folder) || &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data''' || || No || Default folder for data ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\scenario''' || || No || Default folder for ETL scenarios || &lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\schema''' || || No || Default folder for XLT schema files || &lt;br /&gt;
|-&lt;br /&gt;
| || dataset2webrowset.xsl || No || XSL schema file for Toolseverse XML dataset to [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || webrowset2dataset.xsl || No || XSL schema file for [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML to Toolseverse XML dataset transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || xmldataset.xsd || No || Schema file for Toolsverse XML dataset file format ||  &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\lib''' || || No || Folder for core and third party jar files. Files from this folder automatically added to the classpath ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr-3.0.1.jar || '''Yes'''|| Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-beanutils-1.9.1.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-codec-1.6.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-collections4-4.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-dbcp-1.4.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-logging-1.1.3.jar  || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-math3-3.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-net-2.0.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-pool-1.5.4.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || dom4j-1.6.1.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-cache-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpcore-4.3.2.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpmime-4.3.3.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javassist.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || json-io.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || log4j-1.2.16.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || rsyntaxtextarea.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || RSyntaxTextArea.License.txt || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || saxon9he.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-common.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-sql.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-driver.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-metadata.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-io.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-license.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-mvc.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-security.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-service.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-storage.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-updater.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || derby.jar || No || Derby DB JDBC driver ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || iText-4.2.0-com.itextpdf.jar || No || Read and write PDF files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.json-1.0.4.jar || No || Read and write JSON files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.mail.jar  || No || Send emails ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || jsch-0.1.43.jar  || No || SFTP client ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-schemas-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || servlet-api.jar || No || Required if you are going to call Web services  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || socks.jar || No || Socks proxy used together with FTP  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\plugin''' || || No || Folder for plugins. In other to use files in this folder you must have a valid not expired license ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-excel.jar || No || Required if you are going to read and write Excel files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-html.jar || No || Required if you are going to read and write HTML files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-json.jar || No || Required if you are going to read and write JSON files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-pdf.jar || No || Required if you are going to read and write PDF files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-text.jar || No || Required if you are going to read and write CVS and fixed-length files || toolsverse-etl-connector-json.jar, toolsverse-etl-connector-xml.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-xml.jar || No || Required if you are going to read and write XML files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-db2.jar || No || Required if you are going to work with DB2 databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-informix.jar || No || Required if you are going to work with Informix databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-oracle.jar || No || Required if you are going to work with Oracle databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-mysql.jar || No || Required if you are going to work with MySQL databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-postgres.jar || No || Required if you are going to work with Postgres databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-sybase.jar || No || Required if you are going to work with Sybase ASE databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\jdbc''' || || No || Default folder for [[Installing_and_Configuring_ETL_Framework|JDBC drivers]] ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
home&lt;br /&gt;
   etl.exe&lt;br /&gt;
   etl.app&lt;br /&gt;
   etl.jar&lt;br /&gt;
   etl.sh&lt;br /&gt;
   etlappstart.properties &lt;br /&gt;
   config&lt;br /&gt;
      etl.properties&lt;br /&gt;
      etl_config.xml&lt;br /&gt;
      log4j.properties&lt;br /&gt;
   license&lt;br /&gt;
      *.lic&lt;br /&gt;
   data&lt;br /&gt;
      scenario&lt;br /&gt;
      schema&lt;br /&gt;
         dataset2webrowset.xsl&lt;br /&gt;
         webrowset2dataset.xsl&lt;br /&gt;
         xmldataset.xsd&lt;br /&gt;
   lib	&lt;br /&gt;
      antlr-3.0.1.jar                   &lt;br /&gt;
      antlr.jar                         &lt;br /&gt;
      commons-beanutils-1.9.1.jar          &lt;br /&gt;
      commons-codec-1.6.jar                &lt;br /&gt;
      commons-collections4-4.0.jar         &lt;br /&gt;
      commons-dbcp-1.4.jar                 &lt;br /&gt;
      commons-logging-1.1.3.jar            &lt;br /&gt;
      commons-math3-3.0.jar                &lt;br /&gt;
      commons-net-2.0.jar                  	&lt;br /&gt;
      commons-pool-1.5.4.jar            &lt;br /&gt;
      derby.jar                         &lt;br /&gt;
      dom4j-1.6.1.jar                   &lt;br /&gt;
      httpclient-4.3.3.jar              &lt;br /&gt;
      httpclient-cache-4.3.3.jar        &lt;br /&gt;
      httpcore-4.3.2.jar                &lt;br /&gt;
      httpmime-4.3.3.jar                &lt;br /&gt;
      iText-4.2.0-com.itextpdf.jar      &lt;br /&gt;
      javassist.jar                     &lt;br /&gt;
      javax.json-1.0.4.jar              &lt;br /&gt;
      javax.mail.jar                    &lt;br /&gt;
      jsch-0.1.43.jar                   &lt;br /&gt;
      json-io.jar                       &lt;br /&gt;
      log4j-1.2.16.jar                  &lt;br /&gt;
      poi-3.8-20120326.jar              &lt;br /&gt;
      poi-ooxml-3.8-20120326.jar        &lt;br /&gt;
      poi-ooxml-schemas-3.8-20120326.jar&lt;br /&gt;
      rsyntaxtextarea.jar               &lt;br /&gt;
      RSyntaxTextArea.License.txt       &lt;br /&gt;
      saxon9he.jar                      &lt;br /&gt;
      servlet-api.jar                   &lt;br /&gt;
      socks.jar                         &lt;br /&gt;
      toolsverse-core.jar               &lt;br /&gt;
      toolsverse-etl-aliasreader.jar    &lt;br /&gt;
      toolsverse-etl-common.jar         &lt;br /&gt;
      toolsverse-etl-connector-sql.jar  &lt;br /&gt;
      toolsverse-etl-connector.jar      &lt;br /&gt;
      toolsverse-etl-core.jar           &lt;br /&gt;
      toolsverse-etl-driver.jar         &lt;br /&gt;
      toolsverse-etl-metadata.jar       &lt;br /&gt;
      toolsverse-io.jar                 &lt;br /&gt;
      toolsverse-license.jar            &lt;br /&gt;
      toolsverse-mvc.jar                &lt;br /&gt;
      toolsverse-security.jar           &lt;br /&gt;
      toolsverse-service.jar            &lt;br /&gt;
      toolsverse-storage.jar            &lt;br /&gt;
      toolsverse-updater.jar            &lt;br /&gt;
      xercesImpl.jar             &lt;br /&gt;
      xmlbeans-2.3.0.jar                &lt;br /&gt;
   plugin&lt;br /&gt;
      toolsverse-etl-connector-excel.jar&lt;br /&gt;
      toolsverse-etl-connector-html.jar &lt;br /&gt;
      toolsverse-etl-connector-json.jar &lt;br /&gt;
      toolsverse-etl-connector-pdf.jar  &lt;br /&gt;
      toolsverse-etl-connector-text.jar &lt;br /&gt;
      toolsverse-etl-connector-xml.jar  &lt;br /&gt;
      toolsverse-etl-db2.jar            &lt;br /&gt;
      toolsverse-etl-informix.jar       &lt;br /&gt;
      toolsverse-etl-mysql.jar          &lt;br /&gt;
      toolsverse-etl-oracle.jar         &lt;br /&gt;
      toolsverse-etl-postgres.jar       &lt;br /&gt;
      toolsverse-etl-sqlserver.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Managing dependencies, files and folders ===&lt;br /&gt;
&lt;br /&gt;
Files and folders marked as '''required''' must exist in order for framework to work. Others are optional. &lt;br /&gt;
&lt;br /&gt;
Framework is tested with the particular versions of the third party libraries (see redistribution list). It is likely framework will work with more recent versions than with older versions.&lt;br /&gt;
&lt;br /&gt;
Jars under '''lib''' and '''plugin''' folders are automatically added to the classpath on start-up if there is an available license. Only commercial components of the ETL framework require license. &lt;br /&gt;
&lt;br /&gt;
You can reduce number of folders ETL framework depends on:&lt;br /&gt;
* Move all files from the '''plugin''' folder to '''lib'''.&lt;br /&gt;
* Package existing licenses (*.lic files) in the '''license''' folder into jar file and copy jar into '''lib''' folder. Name of the jar file doesn't matter but lic files must be located in the '''com/toolsverse/license''' folder inside jar.&lt;br /&gt;
* Files in the '''config''' folder and '''config''' folder itself are not required. You can pass properties to the framework using -Dproperty_name=value. &lt;br /&gt;
&lt;br /&gt;
Framework uses '''HOME/data/''' folder for temporary files, scripts and data files. If folder does not exist it is automatically created.  &lt;br /&gt;
&lt;br /&gt;
By default framework is looking for ETL scenarios in the '''HOME/data/scenario folder'''. If you want to change base folder for scenarios use -D property '''scenario.path'''.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/config/SystemConfig.java how ETL frameworks uses system folders.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/etl/core/config/EtlConfig.java how ETL frameworks uses ETL specific folders.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Installing_and_Configuring_ETL_Framework</id>
		<title>Installing and Configuring ETL Framework</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Installing_and_Configuring_ETL_Framework"/>
				<updated>2015-02-08T23:39:57Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: /* Configuring EMail Notifications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Downloading ==&lt;br /&gt;
&lt;br /&gt;
Look for clearly marked ETL Framework downloads. On Windows and OS X ETL Framework can be downloaded as an installer. Use archive downloads for other operating systems.&lt;br /&gt;
&lt;br /&gt;
== Installing ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to install ETL Framework: using installer or extracting files from the archive. &lt;br /&gt;
&lt;br /&gt;
When using installer just execute it and follow instructions on the screen.&lt;br /&gt;
&lt;br /&gt;
OS X installer is offered in a form of self-extracting DMG file. When prompted drag and drop ETL Framework folder to the Applications.&lt;br /&gt;
&lt;br /&gt;
When installing from archive you will need to manually extract files using utility provided by operating system. All files are contained in the enclosing folder named etl-version.&lt;br /&gt;
&lt;br /&gt;
Installing from archive will not add any entries to the Start menu, add desktop launchers or register the software in the registry.&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
&lt;br /&gt;
ETL Framework comes pre-configured to provide highest levels of performance and compatibility.&lt;br /&gt;
&lt;br /&gt;
Framework requires a valid not expired license. Licenses are located under  ETL_FRAMEWORK_HOME\license folder (*.lic files) or under ETL_FRAMEWORK_HOME\lib (*.jar files).&lt;br /&gt;
&lt;br /&gt;
'''Note''': ETL Framework comes with a 20-days evaluation license. It will expire after 20 days since the first use. You can a buy a commercial license which will never expire. License can be delivered as a lic or jar file. Using jars for licenses decreases dependency on external folders.  &lt;br /&gt;
&lt;br /&gt;
You can read more about licensing [http://www.toolsverse.com/support/faq/ here]. &lt;br /&gt;
&lt;br /&gt;
=== Changing configuration properties ===&lt;br /&gt;
&lt;br /&gt;
ETL framework uses etl.properties file located under ETL_FRAMEWORK_HOME/config folder to load configuration properties from. You can change default name of the configuration file by setting property config.file.name. Example: &amp;lt;pre&amp;gt;-Dconfig.file.name=c:/etl/config/test.properties.&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If file does not exist framework will use default values.&lt;br /&gt;
&lt;br /&gt;
You can add any property to the file using format property_name=value. You can also completely ignore configuration file and set properties programmatically using System.setProperty(name, value) or by passing -D props to the Java program.&lt;br /&gt;
&lt;br /&gt;
You can pass properties file name (or any other -D property) as a command line argument:&lt;br /&gt;
&amp;lt;pre&amp;gt;-Dconfig.file.name=import_data.properties&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the properties:&lt;br /&gt;
* network.appupdateurl - the URL used to call auto-update Web service&lt;br /&gt;
* network.appserverurl - the URL used to call ETL Web service&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.appserverurl=http://localhost:8080/dataexplorer/ide&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
# never change properties below&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.name=etlprocess&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring HTTP Proxy ===&lt;br /&gt;
&lt;br /&gt;
Use your properties file (the default is ETL_FRAMEWORK_HOME/config/etl.properties) to configure HTTP proxy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.httpproxyhost=&lt;br /&gt;
network.httpproxyport=&lt;br /&gt;
network.httpproxyuser=&lt;br /&gt;
network.httpproxypassword=&lt;br /&gt;
# none, http, https, socks&lt;br /&gt;
network.httpproxytype=&lt;br /&gt;
# comma separated list of hosts to exclude, for example localhost,198.168.1.1. Can leave it blank &lt;br /&gt;
network.httpproxyexclude=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring EMail Notifications ===&lt;br /&gt;
&lt;br /&gt;
If you are going to use email notifications you need to configure mailer. Use your properties file (the default is ETL_FRAMEWORK_HOME/config/etl.properties):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# example: smtp.mail.host=smtp.gmail.com                    &lt;br /&gt;
smtp.mail.host=&lt;br /&gt;
# example: smtp.mail.port=587 &lt;br /&gt;
smtp.mail.port=&lt;br /&gt;
# example: mailer@gmail.com&lt;br /&gt;
smtp.mail.user=&lt;br /&gt;
# example: passwd&lt;br /&gt;
smtp.mail.password=&lt;br /&gt;
# example: ops@gmail.com&lt;br /&gt;
smtp.mail.to=&lt;br /&gt;
# example: robot@gmail.com&lt;br /&gt;
smtp.mail.from=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Changing JVM Parameters ===&lt;br /&gt;
&lt;br /&gt;
# Open ETL_FRAMEWORK_HOME\etlappstart.properties in your favorite text editor&lt;br /&gt;
# Change line containing app.vm.options&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
=== Changing Logging Parameters ===&lt;br /&gt;
&lt;br /&gt;
# Open ETL_FRAMEWORK_HOME\config\log4j.properties in your favorite text editor&lt;br /&gt;
# Make a change&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
=== Adding JDBC drivers ===&lt;br /&gt;
&lt;br /&gt;
Each copy of the ETL Framework comes with the following JDBC drivers:&lt;br /&gt;
&lt;br /&gt;
* DB2&lt;br /&gt;
* Informix&lt;br /&gt;
* Microsoft SQL Server&lt;br /&gt;
* Sybase Advanced Server&lt;br /&gt;
* MySQL&lt;br /&gt;
* Oracle&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Java DB (Derby)&lt;br /&gt;
&lt;br /&gt;
They are located in the ETL_FRAMEWORK_HOME\jdbc folder. ETL Framework automatically recognizes (on start-up) and dynamically loads (when needed) jdbc drivers under this folder.&lt;br /&gt;
&lt;br /&gt;
To install new jdbc driver just add a sub folder under ETL_FRAMEWORK_HOME\jdbc and put all required files there. Restart Data Explorer. &lt;br /&gt;
&lt;br /&gt;
Alternatively, since JDBC drivers are just jar files you can simply put them in the ETL_FRAMEWORK_HOME\lib folder and they will be automatically loaded and added to the classpath.&lt;br /&gt;
&lt;br /&gt;
== Redistribution and managing dependencies ==&lt;br /&gt;
&lt;br /&gt;
Configure ETL framework the way you like, exclude all unneeded components. You can find redistribution list and recommendations how to manage dependencies [[Redistribution and managing dependencies|here]].&lt;br /&gt;
&lt;br /&gt;
== Checking for updates ==&lt;br /&gt;
&lt;br /&gt;
ETL Framework can check for new version and update itself if new version exists.&lt;br /&gt;
&lt;br /&gt;
To check for new new version run ETL framework executable with -v parameter. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\projects\toolsverse\java\dist\etl&amp;gt;etl.exe -v&lt;br /&gt;
Toolsverse Etl Framework 4.0-19862. Use -? for help.&lt;br /&gt;
&lt;br /&gt;
Checking for updates...&lt;br /&gt;
Update status: new version available&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To auto update ETL framework run executable with -u parameter. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\projects\toolsverse\java\dist\etl&amp;gt;etl.exe -u&lt;br /&gt;
Toolsverse Etl Framework 4.0-19862. Use -? for help.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manually updating ==&lt;br /&gt;
&lt;br /&gt;
You can update framework to the new version manually:&lt;br /&gt;
&lt;br /&gt;
# Download update&lt;br /&gt;
# Replace exiting files on files from the update&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Installing_and_Configuring_ETL_Framework</id>
		<title>Installing and Configuring ETL Framework</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Installing_and_Configuring_ETL_Framework"/>
				<updated>2015-02-08T23:38:57Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: /* Changing configuration properties */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Downloading ==&lt;br /&gt;
&lt;br /&gt;
Look for clearly marked ETL Framework downloads. On Windows and OS X ETL Framework can be downloaded as an installer. Use archive downloads for other operating systems.&lt;br /&gt;
&lt;br /&gt;
== Installing ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to install ETL Framework: using installer or extracting files from the archive. &lt;br /&gt;
&lt;br /&gt;
When using installer just execute it and follow instructions on the screen.&lt;br /&gt;
&lt;br /&gt;
OS X installer is offered in a form of self-extracting DMG file. When prompted drag and drop ETL Framework folder to the Applications.&lt;br /&gt;
&lt;br /&gt;
When installing from archive you will need to manually extract files using utility provided by operating system. All files are contained in the enclosing folder named etl-version.&lt;br /&gt;
&lt;br /&gt;
Installing from archive will not add any entries to the Start menu, add desktop launchers or register the software in the registry.&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
&lt;br /&gt;
ETL Framework comes pre-configured to provide highest levels of performance and compatibility.&lt;br /&gt;
&lt;br /&gt;
Framework requires a valid not expired license. Licenses are located under  ETL_FRAMEWORK_HOME\license folder (*.lic files) or under ETL_FRAMEWORK_HOME\lib (*.jar files).&lt;br /&gt;
&lt;br /&gt;
'''Note''': ETL Framework comes with a 20-days evaluation license. It will expire after 20 days since the first use. You can a buy a commercial license which will never expire. License can be delivered as a lic or jar file. Using jars for licenses decreases dependency on external folders.  &lt;br /&gt;
&lt;br /&gt;
You can read more about licensing [http://www.toolsverse.com/support/faq/ here]. &lt;br /&gt;
&lt;br /&gt;
=== Changing configuration properties ===&lt;br /&gt;
&lt;br /&gt;
ETL framework uses etl.properties file located under ETL_FRAMEWORK_HOME/config folder to load configuration properties from. You can change default name of the configuration file by setting property config.file.name. Example: &amp;lt;pre&amp;gt;-Dconfig.file.name=c:/etl/config/test.properties.&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If file does not exist framework will use default values.&lt;br /&gt;
&lt;br /&gt;
You can add any property to the file using format property_name=value. You can also completely ignore configuration file and set properties programmatically using System.setProperty(name, value) or by passing -D props to the Java program.&lt;br /&gt;
&lt;br /&gt;
You can pass properties file name (or any other -D property) as a command line argument:&lt;br /&gt;
&amp;lt;pre&amp;gt;-Dconfig.file.name=import_data.properties&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some of the properties:&lt;br /&gt;
* network.appupdateurl - the URL used to call auto-update Web service&lt;br /&gt;
* network.appserverurl - the URL used to call ETL Web service&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.appserverurl=http://localhost:8080/dataexplorer/ide&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
# never change properties below&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.name=etlprocess&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring HTTP Proxy ===&lt;br /&gt;
&lt;br /&gt;
Use your properties file (the default is ETL_FRAMEWORK_HOME/config/etl.properties) to configure HTTP proxy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.httpproxyhost=&lt;br /&gt;
network.httpproxyport=&lt;br /&gt;
network.httpproxyuser=&lt;br /&gt;
network.httpproxypassword=&lt;br /&gt;
# none, http, https, socks&lt;br /&gt;
network.httpproxytype=&lt;br /&gt;
# comma separated list of hosts to exclude, for example localhost,198.168.1.1. Can leave it blank &lt;br /&gt;
network.httpproxyexclude=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring EMail Notifications ===&lt;br /&gt;
&lt;br /&gt;
If you are going to use email notifications you need to configure mailer. Use your properties file (the default is ETL_FRAMEWORK_HOME/config/etl.properties):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# example: smtp.mail.host=smtp.gmail.com                    &lt;br /&gt;
smtp.mail.host=&lt;br /&gt;
# example: smtp.mail.port=587 &lt;br /&gt;
smtp.mail.port=&lt;br /&gt;
# example: mailer@marketo.com&lt;br /&gt;
smtp.mail.user=&lt;br /&gt;
# example: passwd&lt;br /&gt;
smtp.mail.password=&lt;br /&gt;
# example: ops@marketo.com&lt;br /&gt;
smtp.mail.to=&lt;br /&gt;
# example: robot@marketo.com&lt;br /&gt;
smtp.mail.from=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Changing JVM Parameters ===&lt;br /&gt;
&lt;br /&gt;
# Open ETL_FRAMEWORK_HOME\etlappstart.properties in your favorite text editor&lt;br /&gt;
# Change line containing app.vm.options&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
=== Changing Logging Parameters ===&lt;br /&gt;
&lt;br /&gt;
# Open ETL_FRAMEWORK_HOME\config\log4j.properties in your favorite text editor&lt;br /&gt;
# Make a change&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
=== Adding JDBC drivers ===&lt;br /&gt;
&lt;br /&gt;
Each copy of the ETL Framework comes with the following JDBC drivers:&lt;br /&gt;
&lt;br /&gt;
* DB2&lt;br /&gt;
* Informix&lt;br /&gt;
* Microsoft SQL Server&lt;br /&gt;
* Sybase Advanced Server&lt;br /&gt;
* MySQL&lt;br /&gt;
* Oracle&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Java DB (Derby)&lt;br /&gt;
&lt;br /&gt;
They are located in the ETL_FRAMEWORK_HOME\jdbc folder. ETL Framework automatically recognizes (on start-up) and dynamically loads (when needed) jdbc drivers under this folder.&lt;br /&gt;
&lt;br /&gt;
To install new jdbc driver just add a sub folder under ETL_FRAMEWORK_HOME\jdbc and put all required files there. Restart Data Explorer. &lt;br /&gt;
&lt;br /&gt;
Alternatively, since JDBC drivers are just jar files you can simply put them in the ETL_FRAMEWORK_HOME\lib folder and they will be automatically loaded and added to the classpath.&lt;br /&gt;
&lt;br /&gt;
== Redistribution and managing dependencies ==&lt;br /&gt;
&lt;br /&gt;
Configure ETL framework the way you like, exclude all unneeded components. You can find redistribution list and recommendations how to manage dependencies [[Redistribution and managing dependencies|here]].&lt;br /&gt;
&lt;br /&gt;
== Checking for updates ==&lt;br /&gt;
&lt;br /&gt;
ETL Framework can check for new version and update itself if new version exists.&lt;br /&gt;
&lt;br /&gt;
To check for new new version run ETL framework executable with -v parameter. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\projects\toolsverse\java\dist\etl&amp;gt;etl.exe -v&lt;br /&gt;
Toolsverse Etl Framework 4.0-19862. Use -? for help.&lt;br /&gt;
&lt;br /&gt;
Checking for updates...&lt;br /&gt;
Update status: new version available&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To auto update ETL framework run executable with -u parameter. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\projects\toolsverse\java\dist\etl&amp;gt;etl.exe -u&lt;br /&gt;
Toolsverse Etl Framework 4.0-19862. Use -? for help.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manually updating ==&lt;br /&gt;
&lt;br /&gt;
You can update framework to the new version manually:&lt;br /&gt;
&lt;br /&gt;
# Download update&lt;br /&gt;
# Replace exiting files on files from the update&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Installing_and_Configuring_ETL_Framework</id>
		<title>Installing and Configuring ETL Framework</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Installing_and_Configuring_ETL_Framework"/>
				<updated>2015-02-08T23:33:47Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: /* Configuring */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Downloading ==&lt;br /&gt;
&lt;br /&gt;
Look for clearly marked ETL Framework downloads. On Windows and OS X ETL Framework can be downloaded as an installer. Use archive downloads for other operating systems.&lt;br /&gt;
&lt;br /&gt;
== Installing ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to install ETL Framework: using installer or extracting files from the archive. &lt;br /&gt;
&lt;br /&gt;
When using installer just execute it and follow instructions on the screen.&lt;br /&gt;
&lt;br /&gt;
OS X installer is offered in a form of self-extracting DMG file. When prompted drag and drop ETL Framework folder to the Applications.&lt;br /&gt;
&lt;br /&gt;
When installing from archive you will need to manually extract files using utility provided by operating system. All files are contained in the enclosing folder named etl-version.&lt;br /&gt;
&lt;br /&gt;
Installing from archive will not add any entries to the Start menu, add desktop launchers or register the software in the registry.&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
&lt;br /&gt;
ETL Framework comes pre-configured to provide highest levels of performance and compatibility.&lt;br /&gt;
&lt;br /&gt;
Framework requires a valid not expired license. Licenses are located under  ETL_FRAMEWORK_HOME\license folder (*.lic files) or under ETL_FRAMEWORK_HOME\lib (*.jar files).&lt;br /&gt;
&lt;br /&gt;
'''Note''': ETL Framework comes with a 20-days evaluation license. It will expire after 20 days since the first use. You can a buy a commercial license which will never expire. License can be delivered as a lic or jar file. Using jars for licenses decreases dependency on external folders.  &lt;br /&gt;
&lt;br /&gt;
You can read more about licensing [http://www.toolsverse.com/support/faq/ here]. &lt;br /&gt;
&lt;br /&gt;
=== Changing configuration properties ===&lt;br /&gt;
&lt;br /&gt;
ETL framework uses etl.properties file located under ETL_FRAMEWORK_HOME/config folder to load configuration properties from. You can change default name of the configuration file by setting property config.file.name. Example: &amp;lt;pre&amp;gt;-Dconfig.file.name=c:/etl/config/test.properties.&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If file does not exist framework will use default values.&lt;br /&gt;
&lt;br /&gt;
You can add any property to the file using format property_name=value. You can also completely ignore configuration file and set properties programmatically using System.setProperty(name, value) or by passing -D props to the Java program.&lt;br /&gt;
&lt;br /&gt;
Some of the properties:&lt;br /&gt;
* network.appupdateurl - the URL used to call auto-update Web service&lt;br /&gt;
* network.appserverurl - the URL used to call ETL Web service&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.appserverurl=http://localhost:8080/dataexplorer/ide&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
# never change properties below&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.name=etlprocess&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring HTTP Proxy ===&lt;br /&gt;
&lt;br /&gt;
Use your properties file (the default is ETL_FRAMEWORK_HOME/config/etl.properties) to configure HTTP proxy:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.httpproxyhost=&lt;br /&gt;
network.httpproxyport=&lt;br /&gt;
network.httpproxyuser=&lt;br /&gt;
network.httpproxypassword=&lt;br /&gt;
# none, http, https, socks&lt;br /&gt;
network.httpproxytype=&lt;br /&gt;
# comma separated list of hosts to exclude, for example localhost,198.168.1.1. Can leave it blank &lt;br /&gt;
network.httpproxyexclude=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Configuring EMail Notifications ===&lt;br /&gt;
&lt;br /&gt;
If you are going to use email notifications you need to configure mailer. Use your properties file (the default is ETL_FRAMEWORK_HOME/config/etl.properties):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# example: smtp.mail.host=smtp.gmail.com                    &lt;br /&gt;
smtp.mail.host=&lt;br /&gt;
# example: smtp.mail.port=587 &lt;br /&gt;
smtp.mail.port=&lt;br /&gt;
# example: mailer@marketo.com&lt;br /&gt;
smtp.mail.user=&lt;br /&gt;
# example: passwd&lt;br /&gt;
smtp.mail.password=&lt;br /&gt;
# example: ops@marketo.com&lt;br /&gt;
smtp.mail.to=&lt;br /&gt;
# example: robot@marketo.com&lt;br /&gt;
smtp.mail.from=&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Changing JVM Parameters ===&lt;br /&gt;
&lt;br /&gt;
# Open ETL_FRAMEWORK_HOME\etlappstart.properties in your favorite text editor&lt;br /&gt;
# Change line containing app.vm.options&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
=== Changing Logging Parameters ===&lt;br /&gt;
&lt;br /&gt;
# Open ETL_FRAMEWORK_HOME\config\log4j.properties in your favorite text editor&lt;br /&gt;
# Make a change&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
=== Adding JDBC drivers ===&lt;br /&gt;
&lt;br /&gt;
Each copy of the ETL Framework comes with the following JDBC drivers:&lt;br /&gt;
&lt;br /&gt;
* DB2&lt;br /&gt;
* Informix&lt;br /&gt;
* Microsoft SQL Server&lt;br /&gt;
* Sybase Advanced Server&lt;br /&gt;
* MySQL&lt;br /&gt;
* Oracle&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Java DB (Derby)&lt;br /&gt;
&lt;br /&gt;
They are located in the ETL_FRAMEWORK_HOME\jdbc folder. ETL Framework automatically recognizes (on start-up) and dynamically loads (when needed) jdbc drivers under this folder.&lt;br /&gt;
&lt;br /&gt;
To install new jdbc driver just add a sub folder under ETL_FRAMEWORK_HOME\jdbc and put all required files there. Restart Data Explorer. &lt;br /&gt;
&lt;br /&gt;
Alternatively, since JDBC drivers are just jar files you can simply put them in the ETL_FRAMEWORK_HOME\lib folder and they will be automatically loaded and added to the classpath.&lt;br /&gt;
&lt;br /&gt;
== Redistribution and managing dependencies ==&lt;br /&gt;
&lt;br /&gt;
Configure ETL framework the way you like, exclude all unneeded components. You can find redistribution list and recommendations how to manage dependencies [[Redistribution and managing dependencies|here]].&lt;br /&gt;
&lt;br /&gt;
== Checking for updates ==&lt;br /&gt;
&lt;br /&gt;
ETL Framework can check for new version and update itself if new version exists.&lt;br /&gt;
&lt;br /&gt;
To check for new new version run ETL framework executable with -v parameter. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\projects\toolsverse\java\dist\etl&amp;gt;etl.exe -v&lt;br /&gt;
Toolsverse Etl Framework 4.0-19862. Use -? for help.&lt;br /&gt;
&lt;br /&gt;
Checking for updates...&lt;br /&gt;
Update status: new version available&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To auto update ETL framework run executable with -u parameter. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\projects\toolsverse\java\dist\etl&amp;gt;etl.exe -u&lt;br /&gt;
Toolsverse Etl Framework 4.0-19862. Use -? for help.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manually updating ==&lt;br /&gt;
&lt;br /&gt;
You can update framework to the new version manually:&lt;br /&gt;
&lt;br /&gt;
# Download update&lt;br /&gt;
# Replace exiting files on files from the update&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Running_ETL_Scenarios</id>
		<title>Running ETL Scenarios</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Running_ETL_Scenarios"/>
				<updated>2015-02-08T23:03:59Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: /* Running ETL scenario using standalone executable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Embedding ETL scenario into existing Java application ==&lt;br /&gt;
&lt;br /&gt;
There are three easy steps:&lt;br /&gt;
&lt;br /&gt;
# Instantiate EtlConfig&lt;br /&gt;
# Instantiate EtlProcess&lt;br /&gt;
# Execute scenario&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static void main(String[] args)&lt;br /&gt;
{&lt;br /&gt;
        LoadScenarioAndConfigurationFromFile engine = new LoadScenarioAndConfigurationFromFile();&lt;br /&gt;
        &lt;br /&gt;
        try&lt;br /&gt;
        {&lt;br /&gt;
            // instantiates ETL configuration&lt;br /&gt;
            EtlConfig etlConfig = new EtlConfig();&lt;br /&gt;
            &lt;br /&gt;
            // set log level to INFO which increases verbosity of the etl engine&lt;br /&gt;
            Logger.setLevel(EtlLogger.class, Logger.INFO);&lt;br /&gt;
            &lt;br /&gt;
            // creates embedded ETL process&lt;br /&gt;
            EtlProcess etlProcess = new EtlProcess(EtlProcess.EtlMode.EMBEDDED);&lt;br /&gt;
            &lt;br /&gt;
            // print out framework version&lt;br /&gt;
            System.out.println(SystemConfig.instance().getTitle(&lt;br /&gt;
                    EtlConfig.DEFAULT_TITLE)&lt;br /&gt;
                    + &amp;quot; &amp;quot;&lt;br /&gt;
                    + SystemConfig.instance().getSystemProperty(&lt;br /&gt;
                            SystemConfig.VERSION));&lt;br /&gt;
            &lt;br /&gt;
            // load configuration which contains source and destination&lt;br /&gt;
            // connections and ETL scenario name. Load and execute ETL scenario.&lt;br /&gt;
            // If no full path&lt;br /&gt;
            // provided the configuration file test_etl_config.xml is expected&lt;br /&gt;
            // to be under app_home/config&lt;br /&gt;
            EtlResponse response = engine.loadConfigAndExecute(etlConfig,&lt;br /&gt;
                    &amp;quot;test_etl_config.xml&amp;quot;, etlProcess);&lt;br /&gt;
            &lt;br /&gt;
            // print out formatted output from the ETL response&lt;br /&gt;
            System.out.println(engine.getMessage(response,&lt;br /&gt;
                    &amp;quot;Exampes/Engine/db2file.xml&amp;quot;));&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
        catch (Exception ex)&lt;br /&gt;
        {&lt;br /&gt;
            System.out.println(Utils.getStackTraceAsString(ex));&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        System.exit(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look at other [http://www.toolsverse.com/products/etl-framework/java-examples/ examples of embedding ETL engine] into Java application.&lt;br /&gt;
&lt;br /&gt;
== Using Web service to run ETL scenario ==&lt;br /&gt;
&lt;br /&gt;
To run ETL scenario using Web service you need to have ETL server installed, configured, up and running. Please read [http://www.toolsverse.com/products/data-explorer/docs/doc.html#_Installing_Server here] how to install and configure ETL server.&lt;br /&gt;
&lt;br /&gt;
You will also need to specify -Dnetwork.appserverurl JVM option. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-Dnetwork.appserverurl=http://host:port/dataexplorer/ide&amp;lt;/pre&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
You can use ETL_FRAMEWORK_HOME/config/etl.properties to set network.appserverurl or set it programmatically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.appserverurl=http://localhost:8080/dataexplorer/ide&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.name=etlprocess&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
&amp;lt;/pre&amp;gt;  &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Once server is configured using Web service is as easy as:&lt;br /&gt;
&lt;br /&gt;
# Instantiating EtlConfig and adding all required connection information&lt;br /&gt;
# Instantiating instance and initializing EtlRequest&lt;br /&gt;
# Instantiating instance of the EtlService interface using ServiceFactory and appropriate dynamic proxy&lt;br /&gt;
# Calling EtlService#executeEtl  &lt;br /&gt;
 &lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Creates connection aliases for ETL process, sets scenario name, remotely executes ETL scenario.&lt;br /&gt;
 * &lt;br /&gt;
 * @return ETL response&lt;br /&gt;
 * @throws Exception in case of any error&lt;br /&gt;
 */&lt;br /&gt;
private EtlResponse execute()&lt;br /&gt;
        throws Exception&lt;br /&gt;
{&lt;br /&gt;
        // initializes system config, loads properties&lt;br /&gt;
        SystemConfig.instance();&lt;br /&gt;
        &lt;br /&gt;
        // instantiates ETL config&lt;br /&gt;
        EtlConfig config = new EtlConfig();&lt;br /&gt;
        &lt;br /&gt;
        // initializes ETl config&lt;br /&gt;
        config.init();&lt;br /&gt;
        &lt;br /&gt;
        // creates source alias&lt;br /&gt;
        Alias source = new Alias();&lt;br /&gt;
        source.setName(&amp;quot;Java DB&amp;quot;);&lt;br /&gt;
        source.setUrl(&amp;quot;jdbc:derby:{app.root.data}/demo/javadb&amp;quot;);&lt;br /&gt;
        source.setJdbcDriverClass(&amp;quot;org.apache.derby.jdbc.EmbeddedDriver&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // creates destination alias&lt;br /&gt;
        Alias destination = new Alias();&lt;br /&gt;
        destination.setName(&amp;quot;JSON files&amp;quot;);&lt;br /&gt;
        destination&lt;br /&gt;
                .setConnectorClassName(&amp;quot;com.toolsverse.etl.connector.json.JsonConnector&amp;quot;);&lt;br /&gt;
        destination.setUrl(&amp;quot;{app.root.data}/*.json&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // adds aliases. ETL process will create connections from these aliases&lt;br /&gt;
        config.addAliasToMap(EtlConfig.SOURCE_CONNECTION_NAME, source);&lt;br /&gt;
        config.addAliasToMap(EtlConfig.DEST_CONNECTION_NAME, destination);&lt;br /&gt;
        &lt;br /&gt;
        // creates empty ETL scenario, sets ETL action. The remote ETL process&lt;br /&gt;
        // will load it from file at the run-time.&lt;br /&gt;
        Scenario scenario = new Scenario();&lt;br /&gt;
        scenario.setName(&amp;quot;Examples/Engine/db2file.xml&amp;quot;);&lt;br /&gt;
        scenario.setAction(EtlConfig.EXTRACT_LOAD);&lt;br /&gt;
        &lt;br /&gt;
        // creates ETL request using given config, scenario and log level&lt;br /&gt;
        EtlRequest request = new EtlRequest(config, scenario, Logger.INFO);&lt;br /&gt;
        &lt;br /&gt;
        if (Utils.isNothing(SystemConfig.instance().getSystemProperty(&lt;br /&gt;
                SystemConfig.SERVER_URL)))&lt;br /&gt;
            SystemConfig.instance().setSystemProperty(SystemConfig.SERVER_URL,&lt;br /&gt;
                    &amp;quot;http://localhost:8080/dataexplorer/ide&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // gets ETL service from the factory. The ServiceProxyWeb used as a&lt;br /&gt;
        // dynamic proxy&lt;br /&gt;
        EtlService etlService = ServiceFactory.getService(EtlService.class,&lt;br /&gt;
                ServiceProxyWeb.class.getName());&lt;br /&gt;
        &lt;br /&gt;
        // remotely executes ETL process&lt;br /&gt;
        return etlService.executeEtl(request);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running ETL scenario using standalone executable ==&lt;br /&gt;
&lt;br /&gt;
# Open APP_HOME/config/etl_config.xml file in your favorite text editor.&lt;br /&gt;
# Add connections for the particular ETL scenario&lt;br /&gt;
# Specify connections to use and scenarios to run&lt;br /&gt;
# Save&lt;br /&gt;
# Run ETL executable. For example c:\etl\etl.exe on Windows&lt;br /&gt;
# When it is finished check the etl.log file located under APP_HOME/logs&lt;br /&gt;
&lt;br /&gt;
'''Example of the etl_config.xml:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;config&amp;gt;&lt;br /&gt;
   &amp;lt;connections&amp;gt;&lt;br /&gt;
      &amp;lt;connection alias=&amp;quot;test javadb&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;driver&amp;gt;org.apache.derby.jdbc.EmbeddedDriver&amp;lt;/driver&amp;gt;&lt;br /&gt;
         &amp;lt;url&amp;gt;jdbc:derby:{app.root.data}/demo/javadb&amp;lt;/url&amp;gt;&lt;br /&gt;
      &amp;lt;/connection&amp;gt;&lt;br /&gt;
      &amp;lt;connection alias=&amp;quot;test oracle&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;driver&amp;gt;oracle.jdbc.driver.OracleDriver &amp;lt;/driver&amp;gt;&lt;br /&gt;
         &amp;lt;url&amp;gt;jdbc:oracle:thin:@localhost:1521:orcl1&amp;lt;/url&amp;gt;&lt;br /&gt;
         &amp;lt;userid&amp;gt;user&amp;lt;/userid&amp;gt;&lt;br /&gt;
         &amp;lt;password&amp;gt;password&amp;lt;/password&amp;gt;   &lt;br /&gt;
         &amp;lt;params/&amp;gt;&lt;br /&gt;
      &amp;lt;/connection&amp;gt;&lt;br /&gt;
   &amp;lt;/connections&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
   &amp;lt;active.connections&amp;gt;&lt;br /&gt;
      &amp;lt;sourses&amp;gt;&lt;br /&gt;
         &amp;lt;source alias=&amp;quot;test javadb&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/sourses&amp;gt;&lt;br /&gt;
      &amp;lt;destination alias=&amp;quot;test oracle&amp;quot;/&amp;gt; &lt;br /&gt;
   &amp;lt;/active.connections&amp;gt;&lt;br /&gt;
   &amp;lt;execute&amp;gt;&lt;br /&gt;
       &amp;lt;scenario name=&amp;quot;move.xml&amp;quot; action=&amp;quot;extract_load&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/execute&amp;gt;&lt;br /&gt;
&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example move.xml ETL scenario located under the {app.data}/scenario folder will be executed using extract_load action. Alias test javadb will be used for the source connection and alias test oracle for the destination.&lt;br /&gt;
&lt;br /&gt;
Read more about [[Configuration_file|ETL Configuration File]].&lt;br /&gt;
&lt;br /&gt;
You can pass properties file name (or any other -D property) as a command line argument:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;etl.exe -Dconfig.file.name=import_data.properties&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also set the name of the XML configuration file (connections):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;etl.exe -Detl.config.name=import_data_config.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Last but not least you can use properties file to define XML configuration file (connections):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# don't modify&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
etl.config.name=import_data_config.xml.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating and running ETL scenario using Data Explorer ==&lt;br /&gt;
&lt;br /&gt;
The best way to create, run and schedule ETL, data integration and data migration scenario is using [http://toolsverse.com/products/data-explorer/docs/doc.html#developetlscenarios Data Explorer] - an integrated ETL IDE.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Running_ETL_Scenarios</id>
		<title>Running ETL Scenarios</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Running_ETL_Scenarios"/>
				<updated>2015-02-08T22:45:07Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: /* Running ETL scenario using standalone executable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Embedding ETL scenario into existing Java application ==&lt;br /&gt;
&lt;br /&gt;
There are three easy steps:&lt;br /&gt;
&lt;br /&gt;
# Instantiate EtlConfig&lt;br /&gt;
# Instantiate EtlProcess&lt;br /&gt;
# Execute scenario&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static void main(String[] args)&lt;br /&gt;
{&lt;br /&gt;
        LoadScenarioAndConfigurationFromFile engine = new LoadScenarioAndConfigurationFromFile();&lt;br /&gt;
        &lt;br /&gt;
        try&lt;br /&gt;
        {&lt;br /&gt;
            // instantiates ETL configuration&lt;br /&gt;
            EtlConfig etlConfig = new EtlConfig();&lt;br /&gt;
            &lt;br /&gt;
            // set log level to INFO which increases verbosity of the etl engine&lt;br /&gt;
            Logger.setLevel(EtlLogger.class, Logger.INFO);&lt;br /&gt;
            &lt;br /&gt;
            // creates embedded ETL process&lt;br /&gt;
            EtlProcess etlProcess = new EtlProcess(EtlProcess.EtlMode.EMBEDDED);&lt;br /&gt;
            &lt;br /&gt;
            // print out framework version&lt;br /&gt;
            System.out.println(SystemConfig.instance().getTitle(&lt;br /&gt;
                    EtlConfig.DEFAULT_TITLE)&lt;br /&gt;
                    + &amp;quot; &amp;quot;&lt;br /&gt;
                    + SystemConfig.instance().getSystemProperty(&lt;br /&gt;
                            SystemConfig.VERSION));&lt;br /&gt;
            &lt;br /&gt;
            // load configuration which contains source and destination&lt;br /&gt;
            // connections and ETL scenario name. Load and execute ETL scenario.&lt;br /&gt;
            // If no full path&lt;br /&gt;
            // provided the configuration file test_etl_config.xml is expected&lt;br /&gt;
            // to be under app_home/config&lt;br /&gt;
            EtlResponse response = engine.loadConfigAndExecute(etlConfig,&lt;br /&gt;
                    &amp;quot;test_etl_config.xml&amp;quot;, etlProcess);&lt;br /&gt;
            &lt;br /&gt;
            // print out formatted output from the ETL response&lt;br /&gt;
            System.out.println(engine.getMessage(response,&lt;br /&gt;
                    &amp;quot;Exampes/Engine/db2file.xml&amp;quot;));&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
        catch (Exception ex)&lt;br /&gt;
        {&lt;br /&gt;
            System.out.println(Utils.getStackTraceAsString(ex));&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        System.exit(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look at other [http://www.toolsverse.com/products/etl-framework/java-examples/ examples of embedding ETL engine] into Java application.&lt;br /&gt;
&lt;br /&gt;
== Using Web service to run ETL scenario ==&lt;br /&gt;
&lt;br /&gt;
To run ETL scenario using Web service you need to have ETL server installed, configured, up and running. Please read [http://www.toolsverse.com/products/data-explorer/docs/doc.html#_Installing_Server here] how to install and configure ETL server.&lt;br /&gt;
&lt;br /&gt;
You will also need to specify -Dnetwork.appserverurl JVM option. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-Dnetwork.appserverurl=http://host:port/dataexplorer/ide&amp;lt;/pre&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
You can use ETL_FRAMEWORK_HOME/config/etl.properties to set network.appserverurl or set it programmatically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.appserverurl=http://localhost:8080/dataexplorer/ide&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.name=etlprocess&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
&amp;lt;/pre&amp;gt;  &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Once server is configured using Web service is as easy as:&lt;br /&gt;
&lt;br /&gt;
# Instantiating EtlConfig and adding all required connection information&lt;br /&gt;
# Instantiating instance and initializing EtlRequest&lt;br /&gt;
# Instantiating instance of the EtlService interface using ServiceFactory and appropriate dynamic proxy&lt;br /&gt;
# Calling EtlService#executeEtl  &lt;br /&gt;
 &lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Creates connection aliases for ETL process, sets scenario name, remotely executes ETL scenario.&lt;br /&gt;
 * &lt;br /&gt;
 * @return ETL response&lt;br /&gt;
 * @throws Exception in case of any error&lt;br /&gt;
 */&lt;br /&gt;
private EtlResponse execute()&lt;br /&gt;
        throws Exception&lt;br /&gt;
{&lt;br /&gt;
        // initializes system config, loads properties&lt;br /&gt;
        SystemConfig.instance();&lt;br /&gt;
        &lt;br /&gt;
        // instantiates ETL config&lt;br /&gt;
        EtlConfig config = new EtlConfig();&lt;br /&gt;
        &lt;br /&gt;
        // initializes ETl config&lt;br /&gt;
        config.init();&lt;br /&gt;
        &lt;br /&gt;
        // creates source alias&lt;br /&gt;
        Alias source = new Alias();&lt;br /&gt;
        source.setName(&amp;quot;Java DB&amp;quot;);&lt;br /&gt;
        source.setUrl(&amp;quot;jdbc:derby:{app.root.data}/demo/javadb&amp;quot;);&lt;br /&gt;
        source.setJdbcDriverClass(&amp;quot;org.apache.derby.jdbc.EmbeddedDriver&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // creates destination alias&lt;br /&gt;
        Alias destination = new Alias();&lt;br /&gt;
        destination.setName(&amp;quot;JSON files&amp;quot;);&lt;br /&gt;
        destination&lt;br /&gt;
                .setConnectorClassName(&amp;quot;com.toolsverse.etl.connector.json.JsonConnector&amp;quot;);&lt;br /&gt;
        destination.setUrl(&amp;quot;{app.root.data}/*.json&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // adds aliases. ETL process will create connections from these aliases&lt;br /&gt;
        config.addAliasToMap(EtlConfig.SOURCE_CONNECTION_NAME, source);&lt;br /&gt;
        config.addAliasToMap(EtlConfig.DEST_CONNECTION_NAME, destination);&lt;br /&gt;
        &lt;br /&gt;
        // creates empty ETL scenario, sets ETL action. The remote ETL process&lt;br /&gt;
        // will load it from file at the run-time.&lt;br /&gt;
        Scenario scenario = new Scenario();&lt;br /&gt;
        scenario.setName(&amp;quot;Examples/Engine/db2file.xml&amp;quot;);&lt;br /&gt;
        scenario.setAction(EtlConfig.EXTRACT_LOAD);&lt;br /&gt;
        &lt;br /&gt;
        // creates ETL request using given config, scenario and log level&lt;br /&gt;
        EtlRequest request = new EtlRequest(config, scenario, Logger.INFO);&lt;br /&gt;
        &lt;br /&gt;
        if (Utils.isNothing(SystemConfig.instance().getSystemProperty(&lt;br /&gt;
                SystemConfig.SERVER_URL)))&lt;br /&gt;
            SystemConfig.instance().setSystemProperty(SystemConfig.SERVER_URL,&lt;br /&gt;
                    &amp;quot;http://localhost:8080/dataexplorer/ide&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // gets ETL service from the factory. The ServiceProxyWeb used as a&lt;br /&gt;
        // dynamic proxy&lt;br /&gt;
        EtlService etlService = ServiceFactory.getService(EtlService.class,&lt;br /&gt;
                ServiceProxyWeb.class.getName());&lt;br /&gt;
        &lt;br /&gt;
        // remotely executes ETL process&lt;br /&gt;
        return etlService.executeEtl(request);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running ETL scenario using standalone executable ==&lt;br /&gt;
&lt;br /&gt;
# Open APP_HOME/config/etl_config.xml file in your favorite text editor.&lt;br /&gt;
# Add connections for the particular ETL scenario&lt;br /&gt;
# Specify connections to use and scenarios to run&lt;br /&gt;
# Save&lt;br /&gt;
# Run ETL executable. For example c:\etl\etl.exe on Windows&lt;br /&gt;
# When it is finished check the etl.log file located under APP_HOME/logs&lt;br /&gt;
&lt;br /&gt;
'''Example of the etl_config.xml:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;config&amp;gt;&lt;br /&gt;
   &amp;lt;connections&amp;gt;&lt;br /&gt;
      &amp;lt;connection alias=&amp;quot;test javadb&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;driver&amp;gt;org.apache.derby.jdbc.EmbeddedDriver&amp;lt;/driver&amp;gt;&lt;br /&gt;
         &amp;lt;url&amp;gt;jdbc:derby:{app.root.data}/demo/javadb&amp;lt;/url&amp;gt;&lt;br /&gt;
      &amp;lt;/connection&amp;gt;&lt;br /&gt;
      &amp;lt;connection alias=&amp;quot;test oracle&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;driver&amp;gt;oracle.jdbc.driver.OracleDriver &amp;lt;/driver&amp;gt;&lt;br /&gt;
         &amp;lt;url&amp;gt;jdbc:oracle:thin:@localhost:1521:orcl1&amp;lt;/url&amp;gt;&lt;br /&gt;
         &amp;lt;userid&amp;gt;user&amp;lt;/userid&amp;gt;&lt;br /&gt;
         &amp;lt;password&amp;gt;password&amp;lt;/password&amp;gt;   &lt;br /&gt;
         &amp;lt;params/&amp;gt;&lt;br /&gt;
      &amp;lt;/connection&amp;gt;&lt;br /&gt;
   &amp;lt;/connections&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
   &amp;lt;active.connections&amp;gt;&lt;br /&gt;
      &amp;lt;sourses&amp;gt;&lt;br /&gt;
         &amp;lt;source alias=&amp;quot;test javadb&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/sourses&amp;gt;&lt;br /&gt;
      &amp;lt;destination alias=&amp;quot;test oracle&amp;quot;/&amp;gt; &lt;br /&gt;
   &amp;lt;/active.connections&amp;gt;&lt;br /&gt;
   &amp;lt;execute&amp;gt;&lt;br /&gt;
       &amp;lt;scenario name=&amp;quot;move.xml&amp;quot; action=&amp;quot;extract_load&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/execute&amp;gt;&lt;br /&gt;
&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example move.xml ETL scenario located under the {app.data}/scenario folder will be executed using extract_load action. Alias test javadb will be used for the source connection and alias test oracle for the destination.&lt;br /&gt;
&lt;br /&gt;
You can pass properties file name (or any other -D property) as a command line argument:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;etl.exe -Dconfig.file.name=import_data.properties&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also set the name of the XML configuration file (connections):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;etl.exe -Detl.config.name=import_data_config.xml&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Last but not least you can use properties file to define XML configuration file (connections):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# don't modify&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
etl.config.name=import_data_config.xml.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating and running ETL scenario using Data Explorer ==&lt;br /&gt;
&lt;br /&gt;
The best way to create, run and schedule ETL, data integration and data migration scenario is using [http://toolsverse.com/products/data-explorer/docs/doc.html#developetlscenarios Data Explorer] - an integrated ETL IDE.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Running_ETL_Scenarios</id>
		<title>Running ETL Scenarios</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Running_ETL_Scenarios"/>
				<updated>2015-02-08T22:44:34Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: /* Running ETL scenario using standalone executable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Embedding ETL scenario into existing Java application ==&lt;br /&gt;
&lt;br /&gt;
There are three easy steps:&lt;br /&gt;
&lt;br /&gt;
# Instantiate EtlConfig&lt;br /&gt;
# Instantiate EtlProcess&lt;br /&gt;
# Execute scenario&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static void main(String[] args)&lt;br /&gt;
{&lt;br /&gt;
        LoadScenarioAndConfigurationFromFile engine = new LoadScenarioAndConfigurationFromFile();&lt;br /&gt;
        &lt;br /&gt;
        try&lt;br /&gt;
        {&lt;br /&gt;
            // instantiates ETL configuration&lt;br /&gt;
            EtlConfig etlConfig = new EtlConfig();&lt;br /&gt;
            &lt;br /&gt;
            // set log level to INFO which increases verbosity of the etl engine&lt;br /&gt;
            Logger.setLevel(EtlLogger.class, Logger.INFO);&lt;br /&gt;
            &lt;br /&gt;
            // creates embedded ETL process&lt;br /&gt;
            EtlProcess etlProcess = new EtlProcess(EtlProcess.EtlMode.EMBEDDED);&lt;br /&gt;
            &lt;br /&gt;
            // print out framework version&lt;br /&gt;
            System.out.println(SystemConfig.instance().getTitle(&lt;br /&gt;
                    EtlConfig.DEFAULT_TITLE)&lt;br /&gt;
                    + &amp;quot; &amp;quot;&lt;br /&gt;
                    + SystemConfig.instance().getSystemProperty(&lt;br /&gt;
                            SystemConfig.VERSION));&lt;br /&gt;
            &lt;br /&gt;
            // load configuration which contains source and destination&lt;br /&gt;
            // connections and ETL scenario name. Load and execute ETL scenario.&lt;br /&gt;
            // If no full path&lt;br /&gt;
            // provided the configuration file test_etl_config.xml is expected&lt;br /&gt;
            // to be under app_home/config&lt;br /&gt;
            EtlResponse response = engine.loadConfigAndExecute(etlConfig,&lt;br /&gt;
                    &amp;quot;test_etl_config.xml&amp;quot;, etlProcess);&lt;br /&gt;
            &lt;br /&gt;
            // print out formatted output from the ETL response&lt;br /&gt;
            System.out.println(engine.getMessage(response,&lt;br /&gt;
                    &amp;quot;Exampes/Engine/db2file.xml&amp;quot;));&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
        catch (Exception ex)&lt;br /&gt;
        {&lt;br /&gt;
            System.out.println(Utils.getStackTraceAsString(ex));&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        System.exit(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look at other [http://www.toolsverse.com/products/etl-framework/java-examples/ examples of embedding ETL engine] into Java application.&lt;br /&gt;
&lt;br /&gt;
== Using Web service to run ETL scenario ==&lt;br /&gt;
&lt;br /&gt;
To run ETL scenario using Web service you need to have ETL server installed, configured, up and running. Please read [http://www.toolsverse.com/products/data-explorer/docs/doc.html#_Installing_Server here] how to install and configure ETL server.&lt;br /&gt;
&lt;br /&gt;
You will also need to specify -Dnetwork.appserverurl JVM option. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-Dnetwork.appserverurl=http://host:port/dataexplorer/ide&amp;lt;/pre&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
You can use ETL_FRAMEWORK_HOME/config/etl.properties to set network.appserverurl or set it programmatically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.appserverurl=http://localhost:8080/dataexplorer/ide&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.name=etlprocess&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
&amp;lt;/pre&amp;gt;  &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Once server is configured using Web service is as easy as:&lt;br /&gt;
&lt;br /&gt;
# Instantiating EtlConfig and adding all required connection information&lt;br /&gt;
# Instantiating instance and initializing EtlRequest&lt;br /&gt;
# Instantiating instance of the EtlService interface using ServiceFactory and appropriate dynamic proxy&lt;br /&gt;
# Calling EtlService#executeEtl  &lt;br /&gt;
 &lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Creates connection aliases for ETL process, sets scenario name, remotely executes ETL scenario.&lt;br /&gt;
 * &lt;br /&gt;
 * @return ETL response&lt;br /&gt;
 * @throws Exception in case of any error&lt;br /&gt;
 */&lt;br /&gt;
private EtlResponse execute()&lt;br /&gt;
        throws Exception&lt;br /&gt;
{&lt;br /&gt;
        // initializes system config, loads properties&lt;br /&gt;
        SystemConfig.instance();&lt;br /&gt;
        &lt;br /&gt;
        // instantiates ETL config&lt;br /&gt;
        EtlConfig config = new EtlConfig();&lt;br /&gt;
        &lt;br /&gt;
        // initializes ETl config&lt;br /&gt;
        config.init();&lt;br /&gt;
        &lt;br /&gt;
        // creates source alias&lt;br /&gt;
        Alias source = new Alias();&lt;br /&gt;
        source.setName(&amp;quot;Java DB&amp;quot;);&lt;br /&gt;
        source.setUrl(&amp;quot;jdbc:derby:{app.root.data}/demo/javadb&amp;quot;);&lt;br /&gt;
        source.setJdbcDriverClass(&amp;quot;org.apache.derby.jdbc.EmbeddedDriver&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // creates destination alias&lt;br /&gt;
        Alias destination = new Alias();&lt;br /&gt;
        destination.setName(&amp;quot;JSON files&amp;quot;);&lt;br /&gt;
        destination&lt;br /&gt;
                .setConnectorClassName(&amp;quot;com.toolsverse.etl.connector.json.JsonConnector&amp;quot;);&lt;br /&gt;
        destination.setUrl(&amp;quot;{app.root.data}/*.json&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // adds aliases. ETL process will create connections from these aliases&lt;br /&gt;
        config.addAliasToMap(EtlConfig.SOURCE_CONNECTION_NAME, source);&lt;br /&gt;
        config.addAliasToMap(EtlConfig.DEST_CONNECTION_NAME, destination);&lt;br /&gt;
        &lt;br /&gt;
        // creates empty ETL scenario, sets ETL action. The remote ETL process&lt;br /&gt;
        // will load it from file at the run-time.&lt;br /&gt;
        Scenario scenario = new Scenario();&lt;br /&gt;
        scenario.setName(&amp;quot;Examples/Engine/db2file.xml&amp;quot;);&lt;br /&gt;
        scenario.setAction(EtlConfig.EXTRACT_LOAD);&lt;br /&gt;
        &lt;br /&gt;
        // creates ETL request using given config, scenario and log level&lt;br /&gt;
        EtlRequest request = new EtlRequest(config, scenario, Logger.INFO);&lt;br /&gt;
        &lt;br /&gt;
        if (Utils.isNothing(SystemConfig.instance().getSystemProperty(&lt;br /&gt;
                SystemConfig.SERVER_URL)))&lt;br /&gt;
            SystemConfig.instance().setSystemProperty(SystemConfig.SERVER_URL,&lt;br /&gt;
                    &amp;quot;http://localhost:8080/dataexplorer/ide&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // gets ETL service from the factory. The ServiceProxyWeb used as a&lt;br /&gt;
        // dynamic proxy&lt;br /&gt;
        EtlService etlService = ServiceFactory.getService(EtlService.class,&lt;br /&gt;
                ServiceProxyWeb.class.getName());&lt;br /&gt;
        &lt;br /&gt;
        // remotely executes ETL process&lt;br /&gt;
        return etlService.executeEtl(request);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running ETL scenario using standalone executable ==&lt;br /&gt;
&lt;br /&gt;
# Open APP_HOME/config/etl_config.xml file in your favorite text editor.&lt;br /&gt;
# Add connections for the particular ETL scenario&lt;br /&gt;
# Specify connections to use and scenarios to run&lt;br /&gt;
# Save&lt;br /&gt;
# Run ETL executable. For example c:\etl\etl.exe on Windows&lt;br /&gt;
# When it is finished check the etl.log file located under APP_HOME/logs&lt;br /&gt;
&lt;br /&gt;
'''Example of the etl_config.xml:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;config&amp;gt;&lt;br /&gt;
   &amp;lt;connections&amp;gt;&lt;br /&gt;
      &amp;lt;connection alias=&amp;quot;test javadb&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;driver&amp;gt;org.apache.derby.jdbc.EmbeddedDriver&amp;lt;/driver&amp;gt;&lt;br /&gt;
         &amp;lt;url&amp;gt;jdbc:derby:{app.root.data}/demo/javadb&amp;lt;/url&amp;gt;&lt;br /&gt;
      &amp;lt;/connection&amp;gt;&lt;br /&gt;
      &amp;lt;connection alias=&amp;quot;test oracle&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;driver&amp;gt;oracle.jdbc.driver.OracleDriver &amp;lt;/driver&amp;gt;&lt;br /&gt;
         &amp;lt;url&amp;gt;jdbc:oracle:thin:@localhost:1521:orcl1&amp;lt;/url&amp;gt;&lt;br /&gt;
         &amp;lt;userid&amp;gt;user&amp;lt;/userid&amp;gt;&lt;br /&gt;
         &amp;lt;password&amp;gt;password&amp;lt;/password&amp;gt;   &lt;br /&gt;
         &amp;lt;params/&amp;gt;&lt;br /&gt;
      &amp;lt;/connection&amp;gt;&lt;br /&gt;
   &amp;lt;/connections&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
   &amp;lt;active.connections&amp;gt;&lt;br /&gt;
      &amp;lt;sourses&amp;gt;&lt;br /&gt;
         &amp;lt;source alias=&amp;quot;test javadb&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/sourses&amp;gt;&lt;br /&gt;
      &amp;lt;destination alias=&amp;quot;test oracle&amp;quot;/&amp;gt; &lt;br /&gt;
   &amp;lt;/active.connections&amp;gt;&lt;br /&gt;
   &amp;lt;execute&amp;gt;&lt;br /&gt;
       &amp;lt;scenario name=&amp;quot;move.xml&amp;quot; action=&amp;quot;extract_load&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/execute&amp;gt;&lt;br /&gt;
&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example move.xml ETL scenario located under the {app.data}/scenario folder will be executed using extract_load action. Alias test javadb will be used for the source connection and alias test oracle for the destination.&lt;br /&gt;
&lt;br /&gt;
You can pass properties file name (or any other -D property) as a command line argument:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;etl.exe -Dconfig.file.name=import_data.properties&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also set the name of the XML configuration file (connections):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;etl.exe -Detl.config.name=import_data_config.xml&amp;lt;.pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Last but not least you can use properties file to define XML configuration file (connections):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# don't modify&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
etl.config.name=import_data_config.xml.xml&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating and running ETL scenario using Data Explorer ==&lt;br /&gt;
&lt;br /&gt;
The best way to create, run and schedule ETL, data integration and data migration scenario is using [http://toolsverse.com/products/data-explorer/docs/doc.html#developetlscenarios Data Explorer] - an integrated ETL IDE.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Running_ETL_Scenarios</id>
		<title>Running ETL Scenarios</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Running_ETL_Scenarios"/>
				<updated>2015-02-08T22:42:55Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: /* Running ETL scenario using standalone executable */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Embedding ETL scenario into existing Java application ==&lt;br /&gt;
&lt;br /&gt;
There are three easy steps:&lt;br /&gt;
&lt;br /&gt;
# Instantiate EtlConfig&lt;br /&gt;
# Instantiate EtlProcess&lt;br /&gt;
# Execute scenario&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
public static void main(String[] args)&lt;br /&gt;
{&lt;br /&gt;
        LoadScenarioAndConfigurationFromFile engine = new LoadScenarioAndConfigurationFromFile();&lt;br /&gt;
        &lt;br /&gt;
        try&lt;br /&gt;
        {&lt;br /&gt;
            // instantiates ETL configuration&lt;br /&gt;
            EtlConfig etlConfig = new EtlConfig();&lt;br /&gt;
            &lt;br /&gt;
            // set log level to INFO which increases verbosity of the etl engine&lt;br /&gt;
            Logger.setLevel(EtlLogger.class, Logger.INFO);&lt;br /&gt;
            &lt;br /&gt;
            // creates embedded ETL process&lt;br /&gt;
            EtlProcess etlProcess = new EtlProcess(EtlProcess.EtlMode.EMBEDDED);&lt;br /&gt;
            &lt;br /&gt;
            // print out framework version&lt;br /&gt;
            System.out.println(SystemConfig.instance().getTitle(&lt;br /&gt;
                    EtlConfig.DEFAULT_TITLE)&lt;br /&gt;
                    + &amp;quot; &amp;quot;&lt;br /&gt;
                    + SystemConfig.instance().getSystemProperty(&lt;br /&gt;
                            SystemConfig.VERSION));&lt;br /&gt;
            &lt;br /&gt;
            // load configuration which contains source and destination&lt;br /&gt;
            // connections and ETL scenario name. Load and execute ETL scenario.&lt;br /&gt;
            // If no full path&lt;br /&gt;
            // provided the configuration file test_etl_config.xml is expected&lt;br /&gt;
            // to be under app_home/config&lt;br /&gt;
            EtlResponse response = engine.loadConfigAndExecute(etlConfig,&lt;br /&gt;
                    &amp;quot;test_etl_config.xml&amp;quot;, etlProcess);&lt;br /&gt;
            &lt;br /&gt;
            // print out formatted output from the ETL response&lt;br /&gt;
            System.out.println(engine.getMessage(response,&lt;br /&gt;
                    &amp;quot;Exampes/Engine/db2file.xml&amp;quot;));&lt;br /&gt;
            &lt;br /&gt;
        }&lt;br /&gt;
        catch (Exception ex)&lt;br /&gt;
        {&lt;br /&gt;
            System.out.println(Utils.getStackTraceAsString(ex));&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        System.exit(0);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Look at other [http://www.toolsverse.com/products/etl-framework/java-examples/ examples of embedding ETL engine] into Java application.&lt;br /&gt;
&lt;br /&gt;
== Using Web service to run ETL scenario ==&lt;br /&gt;
&lt;br /&gt;
To run ETL scenario using Web service you need to have ETL server installed, configured, up and running. Please read [http://www.toolsverse.com/products/data-explorer/docs/doc.html#_Installing_Server here] how to install and configure ETL server.&lt;br /&gt;
&lt;br /&gt;
You will also need to specify -Dnetwork.appserverurl JVM option. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;-Dnetwork.appserverurl=http://host:port/dataexplorer/ide&amp;lt;/pre&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
You can use ETL_FRAMEWORK_HOME/config/etl.properties to set network.appserverurl or set it programmatically:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.appserverurl=http://localhost:8080/dataexplorer/ide&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.name=etlprocess&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
&amp;lt;/pre&amp;gt;  &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
Once server is configured using Web service is as easy as:&lt;br /&gt;
&lt;br /&gt;
# Instantiating EtlConfig and adding all required connection information&lt;br /&gt;
# Instantiating instance and initializing EtlRequest&lt;br /&gt;
# Instantiating instance of the EtlService interface using ServiceFactory and appropriate dynamic proxy&lt;br /&gt;
# Calling EtlService#executeEtl  &lt;br /&gt;
 &lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * Creates connection aliases for ETL process, sets scenario name, remotely executes ETL scenario.&lt;br /&gt;
 * &lt;br /&gt;
 * @return ETL response&lt;br /&gt;
 * @throws Exception in case of any error&lt;br /&gt;
 */&lt;br /&gt;
private EtlResponse execute()&lt;br /&gt;
        throws Exception&lt;br /&gt;
{&lt;br /&gt;
        // initializes system config, loads properties&lt;br /&gt;
        SystemConfig.instance();&lt;br /&gt;
        &lt;br /&gt;
        // instantiates ETL config&lt;br /&gt;
        EtlConfig config = new EtlConfig();&lt;br /&gt;
        &lt;br /&gt;
        // initializes ETl config&lt;br /&gt;
        config.init();&lt;br /&gt;
        &lt;br /&gt;
        // creates source alias&lt;br /&gt;
        Alias source = new Alias();&lt;br /&gt;
        source.setName(&amp;quot;Java DB&amp;quot;);&lt;br /&gt;
        source.setUrl(&amp;quot;jdbc:derby:{app.root.data}/demo/javadb&amp;quot;);&lt;br /&gt;
        source.setJdbcDriverClass(&amp;quot;org.apache.derby.jdbc.EmbeddedDriver&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // creates destination alias&lt;br /&gt;
        Alias destination = new Alias();&lt;br /&gt;
        destination.setName(&amp;quot;JSON files&amp;quot;);&lt;br /&gt;
        destination&lt;br /&gt;
                .setConnectorClassName(&amp;quot;com.toolsverse.etl.connector.json.JsonConnector&amp;quot;);&lt;br /&gt;
        destination.setUrl(&amp;quot;{app.root.data}/*.json&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // adds aliases. ETL process will create connections from these aliases&lt;br /&gt;
        config.addAliasToMap(EtlConfig.SOURCE_CONNECTION_NAME, source);&lt;br /&gt;
        config.addAliasToMap(EtlConfig.DEST_CONNECTION_NAME, destination);&lt;br /&gt;
        &lt;br /&gt;
        // creates empty ETL scenario, sets ETL action. The remote ETL process&lt;br /&gt;
        // will load it from file at the run-time.&lt;br /&gt;
        Scenario scenario = new Scenario();&lt;br /&gt;
        scenario.setName(&amp;quot;Examples/Engine/db2file.xml&amp;quot;);&lt;br /&gt;
        scenario.setAction(EtlConfig.EXTRACT_LOAD);&lt;br /&gt;
        &lt;br /&gt;
        // creates ETL request using given config, scenario and log level&lt;br /&gt;
        EtlRequest request = new EtlRequest(config, scenario, Logger.INFO);&lt;br /&gt;
        &lt;br /&gt;
        if (Utils.isNothing(SystemConfig.instance().getSystemProperty(&lt;br /&gt;
                SystemConfig.SERVER_URL)))&lt;br /&gt;
            SystemConfig.instance().setSystemProperty(SystemConfig.SERVER_URL,&lt;br /&gt;
                    &amp;quot;http://localhost:8080/dataexplorer/ide&amp;quot;);&lt;br /&gt;
        &lt;br /&gt;
        // gets ETL service from the factory. The ServiceProxyWeb used as a&lt;br /&gt;
        // dynamic proxy&lt;br /&gt;
        EtlService etlService = ServiceFactory.getService(EtlService.class,&lt;br /&gt;
                ServiceProxyWeb.class.getName());&lt;br /&gt;
        &lt;br /&gt;
        // remotely executes ETL process&lt;br /&gt;
        return etlService.executeEtl(request);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Running ETL scenario using standalone executable ==&lt;br /&gt;
&lt;br /&gt;
# Open APP_HOME/config/etl_config.xml file in your favorite text editor.&lt;br /&gt;
# Add connections for the particular ETL scenario&lt;br /&gt;
# Specify connections to use and scenarios to run&lt;br /&gt;
# Save&lt;br /&gt;
# Run ETL executable. For example c:\etl\etl.exe on Windows&lt;br /&gt;
# When it is finished check the etl.log file located under APP_HOME/logs&lt;br /&gt;
&lt;br /&gt;
'''Example of the etl_config.xml:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;config&amp;gt;&lt;br /&gt;
   &amp;lt;connections&amp;gt;&lt;br /&gt;
      &amp;lt;connection alias=&amp;quot;test javadb&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;driver&amp;gt;org.apache.derby.jdbc.EmbeddedDriver&amp;lt;/driver&amp;gt;&lt;br /&gt;
         &amp;lt;url&amp;gt;jdbc:derby:{app.root.data}/demo/javadb&amp;lt;/url&amp;gt;&lt;br /&gt;
      &amp;lt;/connection&amp;gt;&lt;br /&gt;
      &amp;lt;connection alias=&amp;quot;test oracle&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;driver&amp;gt;oracle.jdbc.driver.OracleDriver &amp;lt;/driver&amp;gt;&lt;br /&gt;
         &amp;lt;url&amp;gt;jdbc:oracle:thin:@localhost:1521:orcl1&amp;lt;/url&amp;gt;&lt;br /&gt;
         &amp;lt;userid&amp;gt;user&amp;lt;/userid&amp;gt;&lt;br /&gt;
         &amp;lt;password&amp;gt;password&amp;lt;/password&amp;gt;   &lt;br /&gt;
         &amp;lt;params/&amp;gt;&lt;br /&gt;
      &amp;lt;/connection&amp;gt;&lt;br /&gt;
   &amp;lt;/connections&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
   &amp;lt;active.connections&amp;gt;&lt;br /&gt;
      &amp;lt;sourses&amp;gt;&lt;br /&gt;
         &amp;lt;source alias=&amp;quot;test javadb&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;/sourses&amp;gt;&lt;br /&gt;
      &amp;lt;destination alias=&amp;quot;test oracle&amp;quot;/&amp;gt; &lt;br /&gt;
   &amp;lt;/active.connections&amp;gt;&lt;br /&gt;
   &amp;lt;execute&amp;gt;&lt;br /&gt;
       &amp;lt;scenario name=&amp;quot;move.xml&amp;quot; action=&amp;quot;extract_load&amp;quot; /&amp;gt;&lt;br /&gt;
   &amp;lt;/execute&amp;gt;&lt;br /&gt;
&amp;lt;/config&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example move.xml ETL scenario located under the {app.data}/scenario folder will be executed using extract_load action. Alias test javadb will be used for the source connection and alias test oracle for the destination.&lt;br /&gt;
&lt;br /&gt;
You can pass properties file name (or any other -D property) as a command line argument:&lt;br /&gt;
&lt;br /&gt;
etl.exe -Dconfig.file.name=import_data.properties&lt;br /&gt;
&lt;br /&gt;
You can also set the name of the XML configuration file (connections):&lt;br /&gt;
&lt;br /&gt;
etl.exe -Detl.config.name=import_data_config.xml&lt;br /&gt;
&lt;br /&gt;
Last but not least you can use properties file to define XML configuration file (connections):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
# don't modify&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
etl.config.name=import_data_config.xml.xml&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Creating and running ETL scenario using Data Explorer ==&lt;br /&gt;
&lt;br /&gt;
The best way to create, run and schedule ETL, data integration and data migration scenario is using [http://toolsverse.com/products/data-explorer/docs/doc.html#developetlscenarios Data Explorer] - an integrated ETL IDE.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies</id>
		<title>Redistribution and managing dependencies</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies"/>
				<updated>2014-12-24T16:08:59Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redistribution list ===&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__ &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Folder !! File !! Required !! Needed for || Depends on&lt;br /&gt;
|-&lt;br /&gt;
| '''home''' || || '''Yes''' || Root folder || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.exe || No || Windows executable  ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.app || No || Mac application bundle || &lt;br /&gt;
|-&lt;br /&gt;
| || etl.sh || No || Unix/Linux shell script ||&lt;br /&gt;
|-&lt;br /&gt;
| || etlappstart.properties || No || JVM properties ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.jar || '''Yes''' || Main executable jar ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\config''' || || No || Default configuration folder ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.properties || No || Configuration properties || &lt;br /&gt;
|-&lt;br /&gt;
| || etl_config.xml || No || Default [[Configuration_file|ETL configuration file]]  ||&lt;br /&gt;
|-&lt;br /&gt;
| || log4j.properties || No || Log configuration  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\license''' || || No || Folder for licenses ||&lt;br /&gt;
|-&lt;br /&gt;
| || *.lic || No || Licenses (ETL framework will also look at license.jar under home\lib folder) || &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data''' || || No || Default folder for data ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\scenario''' || || No || Default folder for ETL scenarios || &lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\schema''' || || No || Default folder for XLT schema files || &lt;br /&gt;
|-&lt;br /&gt;
| || dataset2webrowset.xsl || No || XSL schema file for Toolseverse XML dataset to [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || webrowset2dataset.xsl || No || XSL schema file for [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML to Toolseverse XML dataset transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || xmldataset.xsd || No || Schema file for Toolsverse XML dataset file format ||  &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\lib''' || || No || Folder for core and third party jar files. Files from this folder automatically added to the classpath ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr-3.0.1.jar || '''Yes'''|| Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-beanutils-1.9.1.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-codec-1.6.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-collections4-4.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-dbcp-1.4.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-logging-1.1.3.jar  || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-math3-3.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-net-2.0.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-pool-1.5.4.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || dom4j-1.6.1.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-cache-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpcore-4.3.2.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpmime-4.3.3.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javassist.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || json-io.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || log4j-1.2.16.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || rsyntaxtextarea.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || RSyntaxTextArea.License.txt || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || saxon9he.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || xercesImpl.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-common.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-sql.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-driver.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-metadata.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-io.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-license.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-mvc.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-security.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-service.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-storage.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-updater.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || derby.jar || No || Derby DB JDBC driver ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || iText-4.2.0-com.itextpdf.jar || No || Read and write PDF files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.json-1.0.4.jar || No || Read and write JSON files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.mail.jar  || No || Send emails ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || jsch-0.1.43.jar  || No || SFTP client ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-schemas-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || servlet-api.jar || No || Required if you are going to call Web services  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || socks.jar || No || Socks proxy used together with FTP  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\plugin''' || || No || Folder for plugins. In other to use files in this folder you must have a valid not expired license ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-excel.jar || No || Required if you are going to read and write Excel files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-html.jar || No || Required if you are going to read and write HTML files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-json.jar || No || Required if you are going to read and write JSON files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-pdf.jar || No || Required if you are going to read and write PDF files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-text.jar || No || Required if you are going to read and write CVS and fixed-length files || toolsverse-etl-connector-json.jar, toolsverse-etl-connector-xml.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-xml.jar || No || Required if you are going to read and write XML files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-db2.jar || No || Required if you are going to work with DB2 databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-informix.jar || No || Required if you are going to work with Informix databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-oracle.jar || No || Required if you are going to work with Oracle databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-mysql.jar || No || Required if you are going to work with MySQL databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-postgres.jar || No || Required if you are going to work with Postgres databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-sybase.jar || No || Required if you are going to work with Sybase ASE databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\jdbc''' || || No || Default folder for [[Installing_and_Configuring_ETL_Framework|JDBC drivers]] ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
home&lt;br /&gt;
   etl.exe&lt;br /&gt;
   etl.app&lt;br /&gt;
   etl.jar&lt;br /&gt;
   etl.sh&lt;br /&gt;
   etlappstart.properties &lt;br /&gt;
   config&lt;br /&gt;
      etl.properties&lt;br /&gt;
      etl_config.xml&lt;br /&gt;
      log4j.properties&lt;br /&gt;
   license&lt;br /&gt;
      *.lic&lt;br /&gt;
   data&lt;br /&gt;
      scenario&lt;br /&gt;
      schema&lt;br /&gt;
         dataset2webrowset.xsl&lt;br /&gt;
         webrowset2dataset.xsl&lt;br /&gt;
         xmldataset.xsd&lt;br /&gt;
   lib	&lt;br /&gt;
      antlr-3.0.1.jar                   &lt;br /&gt;
      antlr.jar                         &lt;br /&gt;
      commons-beanutils-1.9.1.jar          &lt;br /&gt;
      commons-codec-1.6.jar                &lt;br /&gt;
      commons-collections4-4.0.jar         &lt;br /&gt;
      commons-dbcp-1.4.jar                 &lt;br /&gt;
      commons-logging-1.1.3.jar            &lt;br /&gt;
      commons-math3-3.0.jar                &lt;br /&gt;
      commons-net-2.0.jar                  	&lt;br /&gt;
      commons-pool-1.5.4.jar            &lt;br /&gt;
      derby.jar                         &lt;br /&gt;
      dom4j-1.6.1.jar                   &lt;br /&gt;
      httpclient-4.3.3.jar              &lt;br /&gt;
      httpclient-cache-4.3.3.jar        &lt;br /&gt;
      httpcore-4.3.2.jar                &lt;br /&gt;
      httpmime-4.3.3.jar                &lt;br /&gt;
      iText-4.2.0-com.itextpdf.jar      &lt;br /&gt;
      javassist.jar                     &lt;br /&gt;
      javax.json-1.0.4.jar              &lt;br /&gt;
      javax.mail.jar                    &lt;br /&gt;
      jsch-0.1.43.jar                   &lt;br /&gt;
      json-io.jar                       &lt;br /&gt;
      log4j-1.2.16.jar                  &lt;br /&gt;
      poi-3.8-20120326.jar              &lt;br /&gt;
      poi-ooxml-3.8-20120326.jar        &lt;br /&gt;
      poi-ooxml-schemas-3.8-20120326.jar&lt;br /&gt;
      rsyntaxtextarea.jar               &lt;br /&gt;
      RSyntaxTextArea.License.txt       &lt;br /&gt;
      saxon9he.jar                      &lt;br /&gt;
      servlet-api.jar                   &lt;br /&gt;
      socks.jar                         &lt;br /&gt;
      toolsverse-core.jar               &lt;br /&gt;
      toolsverse-etl-aliasreader.jar    &lt;br /&gt;
      toolsverse-etl-common.jar         &lt;br /&gt;
      toolsverse-etl-connector-sql.jar  &lt;br /&gt;
      toolsverse-etl-connector.jar      &lt;br /&gt;
      toolsverse-etl-core.jar           &lt;br /&gt;
      toolsverse-etl-driver.jar         &lt;br /&gt;
      toolsverse-etl-metadata.jar       &lt;br /&gt;
      toolsverse-io.jar                 &lt;br /&gt;
      toolsverse-license.jar            &lt;br /&gt;
      toolsverse-mvc.jar                &lt;br /&gt;
      toolsverse-security.jar           &lt;br /&gt;
      toolsverse-service.jar            &lt;br /&gt;
      toolsverse-storage.jar            &lt;br /&gt;
      toolsverse-updater.jar            &lt;br /&gt;
      xercesImpl.jar             &lt;br /&gt;
      xmlbeans-2.3.0.jar                &lt;br /&gt;
   plugin&lt;br /&gt;
      toolsverse-etl-connector-excel.jar&lt;br /&gt;
      toolsverse-etl-connector-html.jar &lt;br /&gt;
      toolsverse-etl-connector-json.jar &lt;br /&gt;
      toolsverse-etl-connector-pdf.jar  &lt;br /&gt;
      toolsverse-etl-connector-text.jar &lt;br /&gt;
      toolsverse-etl-connector-xml.jar  &lt;br /&gt;
      toolsverse-etl-db2.jar            &lt;br /&gt;
      toolsverse-etl-informix.jar       &lt;br /&gt;
      toolsverse-etl-mysql.jar          &lt;br /&gt;
      toolsverse-etl-oracle.jar         &lt;br /&gt;
      toolsverse-etl-postgres.jar       &lt;br /&gt;
      toolsverse-etl-sqlserver.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Managing dependencies, files and folders ===&lt;br /&gt;
&lt;br /&gt;
Files and folders marked as '''required''' must exist in order for framework to work. Others are optional. &lt;br /&gt;
&lt;br /&gt;
Framework is tested with the particular versions of the third party libraries (see redistribution list). It is likely framework will work with more recent versions than with older versions.&lt;br /&gt;
&lt;br /&gt;
Jars under '''lib''' and '''plugin''' folders are automatically added to the classpath on start-up if there is an available license. Only commercial components of the ETL framework require license. &lt;br /&gt;
&lt;br /&gt;
You can reduce number of folders ETL framework depends on:&lt;br /&gt;
* Move all files from the '''plugin''' folder to '''lib'''.&lt;br /&gt;
* Package existing licenses (*.lic files) in the '''license''' folder into jar file and copy jar into '''lib''' folder. Name of the jar file doesn't matter but lic files must be located in the '''com/toolsverse/license''' folder inside jar.&lt;br /&gt;
* Files in the '''config''' folder and '''config''' folder itself are not required. You can pass properties to the framework using -Dproperty_name=value. &lt;br /&gt;
&lt;br /&gt;
Framework uses '''HOME/data/''' folder for temporary files, scripts and data files. If folder does not exist it is automatically created.  &lt;br /&gt;
&lt;br /&gt;
By default framework is looking for ETL scenarios in the '''HOME/data/scenario folder'''. If you want to change base folder for scenarios use -D property '''scenario.path'''.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/config/SystemConfig.java how ETL frameworks uses system folders.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/etl/core/config/EtlConfig.java how ETL frameworks uses ETL specific folders.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies</id>
		<title>Redistribution and managing dependencies</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies"/>
				<updated>2014-12-24T16:08:26Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redistribution list ===&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__ &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Folder !! File !! Required !! Needed for || Depends on&lt;br /&gt;
|-&lt;br /&gt;
| '''home''' || || '''Yes''' || Root folder || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.exe || No || Windows executable  ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.app || No || Mac application bundle || &lt;br /&gt;
|-&lt;br /&gt;
| || etl.sh || No || Unix/Linux shell script ||&lt;br /&gt;
|-&lt;br /&gt;
| || etlappstart.properties || No || JVM properties ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.jar || '''Yes''' || Main executable jar ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\config''' || || No || Default configuration folder ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.properties || No || Configuration properties || &lt;br /&gt;
|-&lt;br /&gt;
| || etl_config.xml || No || Default [[Configuration_file|ETL configuration file]]  ||&lt;br /&gt;
|-&lt;br /&gt;
| || log4j.properties || No || Log configuration  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\license''' || || No || Folder for licenses ||&lt;br /&gt;
|-&lt;br /&gt;
| || *.lic || No || Licenses (ETL framework will also look at license.jar under home\lib folder) || &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data''' || || No || Default folder for data ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\scenario''' || || No || Default folder for ETL scenarios || &lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\schema''' || || No || Default folder for XLT schema files || &lt;br /&gt;
|-&lt;br /&gt;
| || dataset2webrowset.xsl || No || XSL schema file for Toolseverse XML dataset to [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || webrowset2dataset.xsl || No || XSL schema file for [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML to Toolseverse XML dataset transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || xmldataset.xsd || No || Schema file for Toolsverse XML dataset file format ||  &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\lib''' || || No || Folder for core and third party jar files. Files from this folder automatically added to the classpath ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr-3.0.1.jar || '''Yes'''|| Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-beanutils-1.9.1.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-codec-1.6.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-collections4-4.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-dbcp-1.4.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-logging-1.1.3.jar  || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-math3-3.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-net-2.0.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-pool-1.5.4.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || dom4j-1.6.1.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-cache-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpcore-4.3.2.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpmime-4.3.3.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javassist.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || json-io.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || log4j-1.2.16.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || rsyntaxtextarea.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || RSyntaxTextArea.License.txt || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || saxon9he.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || xercesImpl.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-common.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-sql.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-driver.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-metadata.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-io.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-license.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-mvc.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-security.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-service.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-storage.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-updater.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || derby.jar || No || Derby DB JDBC driver ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || iText-4.2.0-com.itextpdf.jar || No || Read and write PDF files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.json-1.0.4.jar || No || Read and write JSON files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.mail.jar  || No || Send emails ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || jsch-0.1.43.jar  || No || SFTP client ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-schemas-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || servlet-api.jar || No || Required if you are going to call Web services  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || socks.jar || No || Socks proxy used together with FTP  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\plugin''' || || No || Folder for plugins. In other to use files in this folder you must have a valid not expired license ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-excel.jar || No || Required if you are going to read and write Excel files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-html.jar || No || Required if you are going to read and write HTML files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-json.jar || No || Required if you are going to read and write JSON files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-pdf.jar || No || Required if you are going to read and write PDF files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-text.jar || No || Required if you are going to read and write CVS and fixed-length files || toolsverse-etl-connector-json.jar, toolsverse-etl-connector-xml.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-xml.jar || No || Required if you are going to read and write XML files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-db2.jar || No || Required if you are going to work with DB2 databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-informix.jar || No || Required if you are going to work with Informix databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-oracle.jar || No || Required if you are going to work with Oracle databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-mysql.jar || No || Required if you are going to work with MySQL databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-postgres.jar || No || Required if you are going to work with Postgres databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-sybase.jar || No || Required if you are going to work with Sybase ASE databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\jdbc''' || || No || Default folder for [[Installing_and_Configuring_ETL_Framework|JDBC drivers]] ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
home&lt;br /&gt;
   etl.exe&lt;br /&gt;
   etl.app&lt;br /&gt;
   etl.jar&lt;br /&gt;
   etl.sh&lt;br /&gt;
   etlappstart.properties &lt;br /&gt;
   config&lt;br /&gt;
      etl.properties&lt;br /&gt;
      etl_config.xml&lt;br /&gt;
      log4j.properties&lt;br /&gt;
   license&lt;br /&gt;
      *.lic&lt;br /&gt;
   data&lt;br /&gt;
      scenario&lt;br /&gt;
      schema&lt;br /&gt;
         dataset2webrowset.xsl&lt;br /&gt;
         webrowset2dataset.xsl&lt;br /&gt;
         xmldataset.xsd&lt;br /&gt;
   lib	&lt;br /&gt;
      antlr-3.0.1.jar                   &lt;br /&gt;
      antlr.jar                         &lt;br /&gt;
      commons-beanutils-1.9.1.jar          &lt;br /&gt;
      commons-codec-1.6.jar                &lt;br /&gt;
      commons-collections4-4.0.jar         &lt;br /&gt;
      commons-dbcp-1.4.jar                 &lt;br /&gt;
      commons-logging-1.1.3.jar            &lt;br /&gt;
      commons-math3-3.0.jar                &lt;br /&gt;
      commons-net-2.0.jar                  	&lt;br /&gt;
      commons-pool-1.5.4.jar            &lt;br /&gt;
      derby.jar                         &lt;br /&gt;
      dom4j-1.6.1.jar                   &lt;br /&gt;
      httpclient-4.3.3.jar              &lt;br /&gt;
      httpclient-cache-4.3.3.jar        &lt;br /&gt;
      httpcore-4.3.2.jar                &lt;br /&gt;
      httpmime-4.3.3.jar                &lt;br /&gt;
      iText-4.2.0-com.itextpdf.jar      &lt;br /&gt;
      javassist.jar                     &lt;br /&gt;
      javax.json-1.0.4.jar              &lt;br /&gt;
      javax.mail.jar                    &lt;br /&gt;
      jsch-0.1.43.jar                   &lt;br /&gt;
      json-io.jar                       &lt;br /&gt;
      log4j-1.2.16.jar                  &lt;br /&gt;
      poi-3.8-20120326.jar              &lt;br /&gt;
      poi-ooxml-3.8-20120326.jar        &lt;br /&gt;
      poi-ooxml-schemas-3.8-20120326.jar&lt;br /&gt;
      rsyntaxtextarea.jar               &lt;br /&gt;
      RSyntaxTextArea.License.txt       &lt;br /&gt;
      saxon9he.jar                      &lt;br /&gt;
      servlet-api.jar                   &lt;br /&gt;
      socks.jar                         &lt;br /&gt;
      toolsverse-core.jar               &lt;br /&gt;
      toolsverse-etl-aliasreader.jar    &lt;br /&gt;
      toolsverse-etl-common.jar         &lt;br /&gt;
      toolsverse-etl-connector-sql.jar  &lt;br /&gt;
      toolsverse-etl-connector.jar      &lt;br /&gt;
      toolsverse-etl-core.jar           &lt;br /&gt;
      toolsverse-etl-driver.jar         &lt;br /&gt;
      toolsverse-etl-metadata.jar       &lt;br /&gt;
      toolsverse-io.jar                 &lt;br /&gt;
      toolsverse-license.jar            &lt;br /&gt;
      toolsverse-mvc.jar                &lt;br /&gt;
      toolsverse-security.jar           &lt;br /&gt;
      toolsverse-service.jar            &lt;br /&gt;
      toolsverse-storage.jar            &lt;br /&gt;
      toolsverse-updater.jar            &lt;br /&gt;
      xercesImpl.jar             &lt;br /&gt;
      xml-apis.jar       &lt;br /&gt;
      resolver.jar       &lt;br /&gt;
      serializer.jar       &lt;br /&gt;
      xmlbeans-2.3.0.jar                &lt;br /&gt;
   plugin&lt;br /&gt;
      toolsverse-etl-connector-excel.jar&lt;br /&gt;
      toolsverse-etl-connector-html.jar &lt;br /&gt;
      toolsverse-etl-connector-json.jar &lt;br /&gt;
      toolsverse-etl-connector-pdf.jar  &lt;br /&gt;
      toolsverse-etl-connector-text.jar &lt;br /&gt;
      toolsverse-etl-connector-xml.jar  &lt;br /&gt;
      toolsverse-etl-db2.jar            &lt;br /&gt;
      toolsverse-etl-informix.jar       &lt;br /&gt;
      toolsverse-etl-mysql.jar          &lt;br /&gt;
      toolsverse-etl-oracle.jar         &lt;br /&gt;
      toolsverse-etl-postgres.jar       &lt;br /&gt;
      toolsverse-etl-sqlserver.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Managing dependencies, files and folders ===&lt;br /&gt;
&lt;br /&gt;
Files and folders marked as '''required''' must exist in order for framework to work. Others are optional. &lt;br /&gt;
&lt;br /&gt;
Framework is tested with the particular versions of the third party libraries (see redistribution list). It is likely framework will work with more recent versions than with older versions.&lt;br /&gt;
&lt;br /&gt;
Jars under '''lib''' and '''plugin''' folders are automatically added to the classpath on start-up if there is an available license. Only commercial components of the ETL framework require license. &lt;br /&gt;
&lt;br /&gt;
You can reduce number of folders ETL framework depends on:&lt;br /&gt;
* Move all files from the '''plugin''' folder to '''lib'''.&lt;br /&gt;
* Package existing licenses (*.lic files) in the '''license''' folder into jar file and copy jar into '''lib''' folder. Name of the jar file doesn't matter but lic files must be located in the '''com/toolsverse/license''' folder inside jar.&lt;br /&gt;
* Files in the '''config''' folder and '''config''' folder itself are not required. You can pass properties to the framework using -Dproperty_name=value. &lt;br /&gt;
&lt;br /&gt;
Framework uses '''HOME/data/''' folder for temporary files, scripts and data files. If folder does not exist it is automatically created.  &lt;br /&gt;
&lt;br /&gt;
By default framework is looking for ETL scenarios in the '''HOME/data/scenario folder'''. If you want to change base folder for scenarios use -D property '''scenario.path'''.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/config/SystemConfig.java how ETL frameworks uses system folders.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/etl/core/config/EtlConfig.java how ETL frameworks uses ETL specific folders.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies</id>
		<title>Redistribution and managing dependencies</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies"/>
				<updated>2014-12-24T15:29:41Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redistribution list ===&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__ &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Folder !! File !! Required !! Needed for || Depends on&lt;br /&gt;
|-&lt;br /&gt;
| '''home''' || || '''Yes''' || Root folder || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.exe || No || Windows executable  ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.app || No || Mac application bundle || &lt;br /&gt;
|-&lt;br /&gt;
| || etl.sh || No || Unix/Linux shell script ||&lt;br /&gt;
|-&lt;br /&gt;
| || etlappstart.properties || No || JVM properties ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.jar || '''Yes''' || Main executable jar ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\config''' || || No || Default configuration folder ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.properties || No || Configuration properties || &lt;br /&gt;
|-&lt;br /&gt;
| || etl_config.xml || No || Default [[Configuration_file|ETL configuration file]]  ||&lt;br /&gt;
|-&lt;br /&gt;
| || log4j.properties || No || Log configuration  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\license''' || || No || Folder for licenses ||&lt;br /&gt;
|-&lt;br /&gt;
| || *.lic || No || Licenses (ETL framework will also look at license.jar under home\lib folder) || &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data''' || || No || Default folder for data ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\scenario''' || || No || Default folder for ETL scenarios || &lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\schema''' || || No || Default folder for XLT schema files || &lt;br /&gt;
|-&lt;br /&gt;
| || dataset2webrowset.xsl || No || XSL schema file for Toolseverse XML dataset to [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || webrowset2dataset.xsl || No || XSL schema file for [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML to Toolseverse XML dataset transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || xmldataset.xsd || No || Schema file for Toolsverse XML dataset file format ||  &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\lib''' || || No || Folder for core and third party jar files. Files from this folder automatically added to the classpath ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr-3.0.1.jar || '''Yes'''|| Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-beanutils-1.9.1.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-codec-1.6.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-collections4-4.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-dbcp-1.4.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-logging-1.1.3.jar  || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-math3-3.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-net-2.0.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-pool-1.5.4.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || dom4j-1.6.1.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-cache-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpcore-4.3.2.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpmime-4.3.3.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javassist.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || json-io.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || log4j-1.2.16.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || rsyntaxtextarea.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || RSyntaxTextArea.License.txt || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || saxon9he.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || xercesImpl.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || xml-apis.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || resolver.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || serializer.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-common.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-sql.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-driver.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-metadata.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-io.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-license.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-mvc.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-security.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-service.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-storage.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-updater.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || derby.jar || No || Derby DB JDBC driver ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || iText-4.2.0-com.itextpdf.jar || No || Read and write PDF files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.json-1.0.4.jar || No || Read and write JSON files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.mail.jar  || No || Send emails ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || jsch-0.1.43.jar  || No || SFTP client ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-schemas-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || servlet-api.jar || No || Required if you are going to call Web services  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || socks.jar || No || Socks proxy used together with FTP  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\plugin''' || || No || Folder for plugins. In other to use files in this folder you must have a valid not expired license ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-excel.jar || No || Required if you are going to read and write Excel files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-html.jar || No || Required if you are going to read and write HTML files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-json.jar || No || Required if you are going to read and write JSON files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-pdf.jar || No || Required if you are going to read and write PDF files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-text.jar || No || Required if you are going to read and write CVS and fixed-length files || toolsverse-etl-connector-json.jar, toolsverse-etl-connector-xml.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-xml.jar || No || Required if you are going to read and write XML files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-db2.jar || No || Required if you are going to work with DB2 databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-informix.jar || No || Required if you are going to work with Informix databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-oracle.jar || No || Required if you are going to work with Oracle databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-mysql.jar || No || Required if you are going to work with MySQL databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-postgres.jar || No || Required if you are going to work with Postgres databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-sybase.jar || No || Required if you are going to work with Sybase ASE databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\jdbc''' || || No || Default folder for [[Installing_and_Configuring_ETL_Framework|JDBC drivers]] ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
home&lt;br /&gt;
   etl.exe&lt;br /&gt;
   etl.app&lt;br /&gt;
   etl.jar&lt;br /&gt;
   etl.sh&lt;br /&gt;
   etlappstart.properties &lt;br /&gt;
   config&lt;br /&gt;
      etl.properties&lt;br /&gt;
      etl_config.xml&lt;br /&gt;
      log4j.properties&lt;br /&gt;
   license&lt;br /&gt;
      *.lic&lt;br /&gt;
   data&lt;br /&gt;
      scenario&lt;br /&gt;
      schema&lt;br /&gt;
         dataset2webrowset.xsl&lt;br /&gt;
         webrowset2dataset.xsl&lt;br /&gt;
         xmldataset.xsd&lt;br /&gt;
   lib	&lt;br /&gt;
      antlr-3.0.1.jar                   &lt;br /&gt;
      antlr.jar                         &lt;br /&gt;
      commons-beanutils-1.9.1.jar          &lt;br /&gt;
      commons-codec-1.6.jar                &lt;br /&gt;
      commons-collections4-4.0.jar         &lt;br /&gt;
      commons-dbcp-1.4.jar                 &lt;br /&gt;
      commons-logging-1.1.3.jar            &lt;br /&gt;
      commons-math3-3.0.jar                &lt;br /&gt;
      commons-net-2.0.jar                  	&lt;br /&gt;
      commons-pool-1.5.4.jar            &lt;br /&gt;
      derby.jar                         &lt;br /&gt;
      dom4j-1.6.1.jar                   &lt;br /&gt;
      httpclient-4.3.3.jar              &lt;br /&gt;
      httpclient-cache-4.3.3.jar        &lt;br /&gt;
      httpcore-4.3.2.jar                &lt;br /&gt;
      httpmime-4.3.3.jar                &lt;br /&gt;
      iText-4.2.0-com.itextpdf.jar      &lt;br /&gt;
      javassist.jar                     &lt;br /&gt;
      javax.json-1.0.4.jar              &lt;br /&gt;
      javax.mail.jar                    &lt;br /&gt;
      jsch-0.1.43.jar                   &lt;br /&gt;
      json-io.jar                       &lt;br /&gt;
      log4j-1.2.16.jar                  &lt;br /&gt;
      poi-3.8-20120326.jar              &lt;br /&gt;
      poi-ooxml-3.8-20120326.jar        &lt;br /&gt;
      poi-ooxml-schemas-3.8-20120326.jar&lt;br /&gt;
      rsyntaxtextarea.jar               &lt;br /&gt;
      RSyntaxTextArea.License.txt       &lt;br /&gt;
      saxon9he.jar                      &lt;br /&gt;
      servlet-api.jar                   &lt;br /&gt;
      socks.jar                         &lt;br /&gt;
      toolsverse-core.jar               &lt;br /&gt;
      toolsverse-etl-aliasreader.jar    &lt;br /&gt;
      toolsverse-etl-common.jar         &lt;br /&gt;
      toolsverse-etl-connector-sql.jar  &lt;br /&gt;
      toolsverse-etl-connector.jar      &lt;br /&gt;
      toolsverse-etl-core.jar           &lt;br /&gt;
      toolsverse-etl-driver.jar         &lt;br /&gt;
      toolsverse-etl-metadata.jar       &lt;br /&gt;
      toolsverse-io.jar                 &lt;br /&gt;
      toolsverse-license.jar            &lt;br /&gt;
      toolsverse-mvc.jar                &lt;br /&gt;
      toolsverse-security.jar           &lt;br /&gt;
      toolsverse-service.jar            &lt;br /&gt;
      toolsverse-storage.jar            &lt;br /&gt;
      toolsverse-updater.jar            &lt;br /&gt;
      xercesImpl.jar             &lt;br /&gt;
      xml-apis.jar       &lt;br /&gt;
      resolver.jar       &lt;br /&gt;
      serializer.jar       &lt;br /&gt;
      xmlbeans-2.3.0.jar                &lt;br /&gt;
   plugin&lt;br /&gt;
      toolsverse-etl-connector-excel.jar&lt;br /&gt;
      toolsverse-etl-connector-html.jar &lt;br /&gt;
      toolsverse-etl-connector-json.jar &lt;br /&gt;
      toolsverse-etl-connector-pdf.jar  &lt;br /&gt;
      toolsverse-etl-connector-text.jar &lt;br /&gt;
      toolsverse-etl-connector-xml.jar  &lt;br /&gt;
      toolsverse-etl-db2.jar            &lt;br /&gt;
      toolsverse-etl-informix.jar       &lt;br /&gt;
      toolsverse-etl-mysql.jar          &lt;br /&gt;
      toolsverse-etl-oracle.jar         &lt;br /&gt;
      toolsverse-etl-postgres.jar       &lt;br /&gt;
      toolsverse-etl-sqlserver.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Managing dependencies, files and folders ===&lt;br /&gt;
&lt;br /&gt;
Files and folders marked as '''required''' must exist in order for framework to work. Others are optional. &lt;br /&gt;
&lt;br /&gt;
Framework is tested with the particular versions of the third party libraries (see redistribution list). It is likely framework will work with more recent versions than with older versions.&lt;br /&gt;
&lt;br /&gt;
Jars under '''lib''' and '''plugin''' folders are automatically added to the classpath on start-up if there is an available license. Only commercial components of the ETL framework require license. &lt;br /&gt;
&lt;br /&gt;
You can reduce number of folders ETL framework depends on:&lt;br /&gt;
* Move all files from the '''plugin''' folder to '''lib'''.&lt;br /&gt;
* Package existing licenses (*.lic files) in the '''license''' folder into jar file and copy jar into '''lib''' folder. Name of the jar file doesn't matter but lic files must be located in the '''com/toolsverse/license''' folder inside jar.&lt;br /&gt;
* Files in the '''config''' folder and '''config''' folder itself are not required. You can pass properties to the framework using -Dproperty_name=value. &lt;br /&gt;
&lt;br /&gt;
Framework uses '''HOME/data/''' folder for temporary files, scripts and data files. If folder does not exist it is automatically created.  &lt;br /&gt;
&lt;br /&gt;
By default framework is looking for ETL scenarios in the '''HOME/data/scenario folder'''. If you want to change base folder for scenarios use -D property '''scenario.path'''.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/config/SystemConfig.java how ETL frameworks uses system folders.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/etl/core/config/EtlConfig.java how ETL frameworks uses ETL specific folders.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies</id>
		<title>Redistribution and managing dependencies</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies"/>
				<updated>2014-12-22T16:54:06Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redistribution list ===&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__ &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Folder !! File !! Required !! Needed for || Depends on&lt;br /&gt;
|-&lt;br /&gt;
| '''home''' || || '''Yes''' || Root folder || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.exe || No || Windows executable  ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.app || No || Mac application bundle || &lt;br /&gt;
|-&lt;br /&gt;
| || etl.sh || No || Unix/Linux shell script ||&lt;br /&gt;
|-&lt;br /&gt;
| || etlappstart.properties || No || JVM properties ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.jar || '''Yes''' || Main executable jar ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\config''' || || No || Default configuration folder ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.properties || No || Configuration properties || &lt;br /&gt;
|-&lt;br /&gt;
| || etl_config.xml || No || Default [[Configuration_file|ETL configuration file]]  ||&lt;br /&gt;
|-&lt;br /&gt;
| || log4j.properties || No || Log configuration  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\license''' || || No || Folder for licenses ||&lt;br /&gt;
|-&lt;br /&gt;
| || *.lic || No || Licenses (ETL framework will also look at license.jar under home\lib folder) || &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data''' || || No || Default folder for data ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\scenario''' || || No || Default folder for ETL scenarios || &lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\schema''' || || No || Default folder for XLT schema files || &lt;br /&gt;
|-&lt;br /&gt;
| || dataset2webrowset.xsl || No || XSL schema file for Toolseverse XML dataset to [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || webrowset2dataset.xsl || No || XSL schema file for [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML to Toolseverse XML dataset transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || xmldataset.xsd || No || Schema file for Toolsverse XML dataset file format ||  &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\lib''' || || No || Folder for core and third party jar files. Files from this folder automatically added to the classpath ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr-3.0.1.jar || '''Yes'''|| Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-beanutils-1.9.1.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-codec-1.6.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-collections4-4.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-dbcp-1.4.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-logging-1.1.3.jar  || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-math3-3.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-net-2.0.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-pool-1.5.4.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || dom4j-1.6.1.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-cache-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpcore-4.3.2.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpmime-4.3.3.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javassist.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || json-io.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || log4j-1.2.16.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || rsyntaxtextarea.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || RSyntaxTextArea.License.txt || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || saxon9he.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || xercesImpl.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || xercesImpl.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || xml-apis.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || resolver.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || serializer.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-common.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-sql.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-driver.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-metadata.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-io.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-license.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-mvc.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-security.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-service.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-storage.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-updater.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || derby.jar || No || Derby DB JDBC driver ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || iText-4.2.0-com.itextpdf.jar || No || Read and write PDF files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.json-1.0.4.jar || No || Read and write JSON files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.mail.jar  || No || Send emails ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || jsch-0.1.43.jar  || No || SFTP client ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-schemas-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || servlet-api.jar || No || Required if you are going to call Web services  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || socks.jar || No || Socks proxy used together with FTP  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\plugin''' || || No || Folder for plugins. In other to use files in this folder you must have a valid not expired license ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-excel.jar || No || Required if you are going to read and write Excel files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-html.jar || No || Required if you are going to read and write HTML files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-json.jar || No || Required if you are going to read and write JSON files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-pdf.jar || No || Required if you are going to read and write PDF files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-text.jar || No || Required if you are going to read and write CVS and fixed-length files || toolsverse-etl-connector-json.jar, toolsverse-etl-connector-xml.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-xml.jar || No || Required if you are going to read and write XML files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-db2.jar || No || Required if you are going to work with DB2 databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-informix.jar || No || Required if you are going to work with Informix databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-oracle.jar || No || Required if you are going to work with Oracle databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-mysql.jar || No || Required if you are going to work with MySQL databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-postgres.jar || No || Required if you are going to work with Postgres databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-sybase.jar || No || Required if you are going to work with Sybase ASE databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\jdbc''' || || No || Default folder for [[Installing_and_Configuring_ETL_Framework|JDBC drivers]] ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
home&lt;br /&gt;
   etl.exe&lt;br /&gt;
   etl.app&lt;br /&gt;
   etl.jar&lt;br /&gt;
   etl.sh&lt;br /&gt;
   etlappstart.properties &lt;br /&gt;
   config&lt;br /&gt;
      etl.properties&lt;br /&gt;
      etl_config.xml&lt;br /&gt;
      log4j.properties&lt;br /&gt;
   license&lt;br /&gt;
      *.lic&lt;br /&gt;
   data&lt;br /&gt;
      scenario&lt;br /&gt;
      schema&lt;br /&gt;
         dataset2webrowset.xsl&lt;br /&gt;
         webrowset2dataset.xsl&lt;br /&gt;
         xmldataset.xsd&lt;br /&gt;
   lib	&lt;br /&gt;
      antlr-3.0.1.jar                   &lt;br /&gt;
      antlr.jar                         &lt;br /&gt;
      commons-beanutils-1.9.1.jar          &lt;br /&gt;
      commons-codec-1.6.jar                &lt;br /&gt;
      commons-collections4-4.0.jar         &lt;br /&gt;
      commons-dbcp-1.4.jar                 &lt;br /&gt;
      commons-logging-1.1.3.jar            &lt;br /&gt;
      commons-math3-3.0.jar                &lt;br /&gt;
      commons-net-2.0.jar                  	&lt;br /&gt;
      commons-pool-1.5.4.jar            &lt;br /&gt;
      derby.jar                         &lt;br /&gt;
      dom4j-1.6.1.jar                   &lt;br /&gt;
      httpclient-4.3.3.jar              &lt;br /&gt;
      httpclient-cache-4.3.3.jar        &lt;br /&gt;
      httpcore-4.3.2.jar                &lt;br /&gt;
      httpmime-4.3.3.jar                &lt;br /&gt;
      iText-4.2.0-com.itextpdf.jar      &lt;br /&gt;
      javassist.jar                     &lt;br /&gt;
      javax.json-1.0.4.jar              &lt;br /&gt;
      javax.mail.jar                    &lt;br /&gt;
      jsch-0.1.43.jar                   &lt;br /&gt;
      json-io.jar                       &lt;br /&gt;
      log4j-1.2.16.jar                  &lt;br /&gt;
      poi-3.8-20120326.jar              &lt;br /&gt;
      poi-ooxml-3.8-20120326.jar        &lt;br /&gt;
      poi-ooxml-schemas-3.8-20120326.jar&lt;br /&gt;
      rsyntaxtextarea.jar               &lt;br /&gt;
      RSyntaxTextArea.License.txt       &lt;br /&gt;
      saxon9he.jar                      &lt;br /&gt;
      servlet-api.jar                   &lt;br /&gt;
      socks.jar                         &lt;br /&gt;
      toolsverse-core.jar               &lt;br /&gt;
      toolsverse-etl-aliasreader.jar    &lt;br /&gt;
      toolsverse-etl-common.jar         &lt;br /&gt;
      toolsverse-etl-connector-sql.jar  &lt;br /&gt;
      toolsverse-etl-connector.jar      &lt;br /&gt;
      toolsverse-etl-core.jar           &lt;br /&gt;
      toolsverse-etl-driver.jar         &lt;br /&gt;
      toolsverse-etl-metadata.jar       &lt;br /&gt;
      toolsverse-io.jar                 &lt;br /&gt;
      toolsverse-license.jar            &lt;br /&gt;
      toolsverse-mvc.jar                &lt;br /&gt;
      toolsverse-security.jar           &lt;br /&gt;
      toolsverse-service.jar            &lt;br /&gt;
      toolsverse-storage.jar            &lt;br /&gt;
      toolsverse-updater.jar            &lt;br /&gt;
      xercesImpl.jar             &lt;br /&gt;
      xml-apis.jar       &lt;br /&gt;
      resolver.jar       &lt;br /&gt;
      serializer.jar       &lt;br /&gt;
      xmlbeans-2.3.0.jar                &lt;br /&gt;
   plugin&lt;br /&gt;
      toolsverse-etl-connector-excel.jar&lt;br /&gt;
      toolsverse-etl-connector-html.jar &lt;br /&gt;
      toolsverse-etl-connector-json.jar &lt;br /&gt;
      toolsverse-etl-connector-pdf.jar  &lt;br /&gt;
      toolsverse-etl-connector-text.jar &lt;br /&gt;
      toolsverse-etl-connector-xml.jar  &lt;br /&gt;
      toolsverse-etl-db2.jar            &lt;br /&gt;
      toolsverse-etl-informix.jar       &lt;br /&gt;
      toolsverse-etl-mysql.jar          &lt;br /&gt;
      toolsverse-etl-oracle.jar         &lt;br /&gt;
      toolsverse-etl-postgres.jar       &lt;br /&gt;
      toolsverse-etl-sqlserver.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Managing dependencies, files and folders ===&lt;br /&gt;
&lt;br /&gt;
Files and folders marked as '''required''' must exist in order for framework to work. Others are optional. &lt;br /&gt;
&lt;br /&gt;
Framework is tested with the particular versions of the third party libraries (see redistribution list). It is likely framework will work with more recent versions than with older versions.&lt;br /&gt;
&lt;br /&gt;
Jars under '''lib''' and '''plugin''' folders are automatically added to the classpath on start-up if there is an available license. Only commercial components of the ETL framework require license. &lt;br /&gt;
&lt;br /&gt;
You can reduce number of folders ETL framework depends on:&lt;br /&gt;
* Move all files from the '''plugin''' folder to '''lib'''.&lt;br /&gt;
* Package existing licenses (*.lic files) in the '''license''' folder into jar file and copy jar into '''lib''' folder. Name of the jar file doesn't matter but lic files must be located in the '''com/toolsverse/license''' folder inside jar.&lt;br /&gt;
* Files in the '''config''' folder and '''config''' folder itself are not required. You can pass properties to the framework using -Dproperty_name=value. &lt;br /&gt;
&lt;br /&gt;
Framework uses '''HOME/data/''' folder for temporary files, scripts and data files. If folder does not exist it is automatically created.  &lt;br /&gt;
&lt;br /&gt;
By default framework is looking for ETL scenarios in the '''HOME/data/scenario folder'''. If you want to change base folder for scenarios use -D property '''scenario.path'''.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/config/SystemConfig.java how ETL frameworks uses system folders.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/etl/core/config/EtlConfig.java how ETL frameworks uses ETL specific folders.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies</id>
		<title>Redistribution and managing dependencies</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Redistribution_and_managing_dependencies"/>
				<updated>2014-12-22T16:52:46Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: /* Redistribution list */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Redistribution list ===&lt;br /&gt;
&lt;br /&gt;
__FORCETOC__ &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Folder !! File !! Required !! Needed for || Depends on&lt;br /&gt;
|-&lt;br /&gt;
| '''home''' || || '''Yes''' || Root folder || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.exe || No || Windows executable  ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.app || No || Mac application bundle || &lt;br /&gt;
|-&lt;br /&gt;
| || etl.sh || No || Unix/Linux shell script ||&lt;br /&gt;
|-&lt;br /&gt;
| || etlappstart.properties || No || JVM properties ||&lt;br /&gt;
|-&lt;br /&gt;
| || etl.jar || '''Yes''' || Main executable jar ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\config''' || || No || Default configuration folder ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || etl.properties || No || Configuration properties || &lt;br /&gt;
|-&lt;br /&gt;
| || etl_config.xml || No || Default [[Configuration_file|ETL configuration file]]  ||&lt;br /&gt;
|-&lt;br /&gt;
| || log4j.properties || No || Log configuration  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\license''' || || No || Folder for licenses ||&lt;br /&gt;
|-&lt;br /&gt;
| || *.lic || No || Licenses (ETL framework will also look at license.jar under home\lib folder) || &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data''' || || No || Default folder for data ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\scenario''' || || No || Default folder for ETL scenarios || &lt;br /&gt;
|-&lt;br /&gt;
| '''home\data\schema''' || || No || Default folder for XLT schema files || &lt;br /&gt;
|-&lt;br /&gt;
| || dataset2webrowset.xsl || No || XSL schema file for Toolseverse XML dataset to [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || webrowset2dataset.xsl || No || XSL schema file for [http://docs.oracle.com/javase/7/docs/api/javax/sql/rowset/WebRowSet.html WebRowSet] XML to Toolseverse XML dataset transformation ||  &lt;br /&gt;
|-&lt;br /&gt;
| || xmldataset.xsd || No || Schema file for Toolsverse XML dataset file format ||  &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\lib''' || || No || Folder for core and third party jar files. Files from this folder automatically added to the classpath ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr-3.0.1.jar || '''Yes'''|| Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || antlr.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-beanutils-1.9.1.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-codec-1.6.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-collections4-4.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-dbcp-1.4.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-logging-1.1.3.jar  || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-math3-3.0.jar || '''Yes''' || Core third party file || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-net-2.0.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || commons-pool-1.5.4.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || dom4j-1.6.1.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpclient-cache-4.3.3.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpcore-4.3.2.jar  || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || httpmime-4.3.3.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javassist.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || json-io.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || log4j-1.2.16.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || rsyntaxtextarea.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || RSyntaxTextArea.License.txt || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || saxon9he.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || xercesImpl.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || xercesImpl.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || xml-apis.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || resolver.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || serializer.jar || '''Yes''' || Core third party file ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-common.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-sql.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-core.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-driver.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-metadata.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-io.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-license.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-mvc.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-security.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-service.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-storage.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-updater.jar || '''Yes''' || Toolsverse core file ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || derby.jar || No || Derby DB JDBC driver ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || iText-4.2.0-com.itextpdf.jar || No || Read and write PDF files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.json-1.0.4.jar || No || Read and write JSON files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || javax.mail.jar  || No || Send emails ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || jsch-0.1.43.jar  || No || SFTP client ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || poi-ooxml-schemas-3.8-20120326.jar || No || Read and write Excel files ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || servlet-api.jar || No || Required if you are going to call Web services  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || socks.jar || No || Socks proxy used together with FTP  ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\plugin''' || || No || Folder for plugins. In other to use files in this folder you must have a valid not expired license ||&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-excel.jar || No || Required if you are going to read and write Excel files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-html.jar || No || Required if you are going to read and write HTML files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-json.jar || No || Required if you are going to read and write JSON files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-pdf.jar || No || Required if you are going to read and write PDF files || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-text.jar || No || Required if you are going to read and write CVS and fixed-length files || toolsverse-etl-connector-json.jar, toolsverse-etl-connector-xml.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-connector-xml.jar || No || Required if you are going to read and write XML files || toolsverse-etl-connector-json.jar&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-db2.jar || No || Required if you are going to work with DB2 databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-informix.jar || No || Required if you are going to work with Informix databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-oracle.jar || No || Required if you are going to work with Oracle databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-mysql.jar || No || Required if you are going to work with MySQL databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-postgres.jar || No || Required if you are going to work with Postgres databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| || toolsverse-etl-sybase.jar || No || Required if you are going to work with Sybase ASE databases || &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| '''home\jdbc''' || || No || Default folder for [[Installing_and_Configuring_ETL_Framework|JDBC drivers]] ||&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
home&lt;br /&gt;
   etl.exe&lt;br /&gt;
   etl.app&lt;br /&gt;
   etl.jar&lt;br /&gt;
   etl.sh&lt;br /&gt;
   etlappstart.properties &lt;br /&gt;
   config&lt;br /&gt;
      etl.properties&lt;br /&gt;
      etl_config.xml&lt;br /&gt;
      log4j.properties&lt;br /&gt;
   license&lt;br /&gt;
      *.lic&lt;br /&gt;
   data&lt;br /&gt;
      scenario&lt;br /&gt;
      schema&lt;br /&gt;
         dataset2webrowset.xsl&lt;br /&gt;
         webrowset2dataset.xsl&lt;br /&gt;
         xmldataset.xsd&lt;br /&gt;
   lib	&lt;br /&gt;
      antlr-3.0.1.jar                   &lt;br /&gt;
      antlr.jar                         &lt;br /&gt;
      commons-beanutils-1.9.1.jar          &lt;br /&gt;
      commons-codec-1.6.jar                &lt;br /&gt;
      commons-collections4-4.0.jar         &lt;br /&gt;
      commons-dbcp-1.4.jar                 &lt;br /&gt;
      commons-logging-1.1.3.jar            &lt;br /&gt;
      commons-math3-3.0.jar                &lt;br /&gt;
      commons-net-2.0.jar                  	&lt;br /&gt;
      commons-pool-1.5.4.jar            &lt;br /&gt;
      derby.jar                         &lt;br /&gt;
      dom4j-1.6.1.jar                   &lt;br /&gt;
      httpclient-4.3.3.jar              &lt;br /&gt;
      httpclient-cache-4.3.3.jar        &lt;br /&gt;
      httpcore-4.3.2.jar                &lt;br /&gt;
      httpmime-4.3.3.jar                &lt;br /&gt;
      iText-4.2.0-com.itextpdf.jar      &lt;br /&gt;
      javassist.jar                     &lt;br /&gt;
      javax.json-1.0.4.jar              &lt;br /&gt;
      javax.mail.jar                    &lt;br /&gt;
      jsch-0.1.43.jar                   &lt;br /&gt;
      json-io.jar                       &lt;br /&gt;
      log4j-1.2.16.jar                  &lt;br /&gt;
      poi-3.8-20120326.jar              &lt;br /&gt;
      poi-ooxml-3.8-20120326.jar        &lt;br /&gt;
      poi-ooxml-schemas-3.8-20120326.jar&lt;br /&gt;
      rsyntaxtextarea.jar               &lt;br /&gt;
      RSyntaxTextArea.License.txt       &lt;br /&gt;
      saxon9he.jar                      &lt;br /&gt;
      servlet-api.jar                   &lt;br /&gt;
      socks.jar                         &lt;br /&gt;
      toolsverse-core.jar               &lt;br /&gt;
      toolsverse-etl-aliasreader.jar    &lt;br /&gt;
      toolsverse-etl-common.jar         &lt;br /&gt;
      toolsverse-etl-connector-sql.jar  &lt;br /&gt;
      toolsverse-etl-connector.jar      &lt;br /&gt;
      toolsverse-etl-core.jar           &lt;br /&gt;
      toolsverse-etl-driver.jar         &lt;br /&gt;
      toolsverse-etl-metadata.jar       &lt;br /&gt;
      toolsverse-io.jar                 &lt;br /&gt;
      toolsverse-license.jar            &lt;br /&gt;
      toolsverse-mvc.jar                &lt;br /&gt;
      toolsverse-security.jar           &lt;br /&gt;
      toolsverse-service.jar            &lt;br /&gt;
      toolsverse-storage.jar            &lt;br /&gt;
      toolsverse-updater.jar            &lt;br /&gt;
      xercesImpl.jar                    &lt;br /&gt;
      xmlbeans-2.3.0.jar                &lt;br /&gt;
   plugin&lt;br /&gt;
      toolsverse-etl-connector-excel.jar&lt;br /&gt;
      toolsverse-etl-connector-html.jar &lt;br /&gt;
      toolsverse-etl-connector-json.jar &lt;br /&gt;
      toolsverse-etl-connector-pdf.jar  &lt;br /&gt;
      toolsverse-etl-connector-text.jar &lt;br /&gt;
      toolsverse-etl-connector-xml.jar  &lt;br /&gt;
      toolsverse-etl-db2.jar            &lt;br /&gt;
      toolsverse-etl-informix.jar       &lt;br /&gt;
      toolsverse-etl-mysql.jar          &lt;br /&gt;
      toolsverse-etl-oracle.jar         &lt;br /&gt;
      toolsverse-etl-postgres.jar       &lt;br /&gt;
      toolsverse-etl-sqlserver.jar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Managing dependencies, files and folders ===&lt;br /&gt;
&lt;br /&gt;
Files and folders marked as '''required''' must exist in order for framework to work. Others are optional. &lt;br /&gt;
&lt;br /&gt;
Framework is tested with the particular versions of the third party libraries (see redistribution list). It is likely framework will work with more recent versions than with older versions.&lt;br /&gt;
&lt;br /&gt;
Jars under '''lib''' and '''plugin''' folders are automatically added to the classpath on start-up if there is an available license. Only commercial components of the ETL framework require license. &lt;br /&gt;
&lt;br /&gt;
You can reduce number of folders ETL framework depends on:&lt;br /&gt;
* Move all files from the '''plugin''' folder to '''lib'''.&lt;br /&gt;
* Package existing licenses (*.lic files) in the '''license''' folder into jar file and copy jar into '''lib''' folder. Name of the jar file doesn't matter but lic files must be located in the '''com/toolsverse/license''' folder inside jar.&lt;br /&gt;
* Files in the '''config''' folder and '''config''' folder itself are not required. You can pass properties to the framework using -Dproperty_name=value. &lt;br /&gt;
&lt;br /&gt;
Framework uses '''HOME/data/''' folder for temporary files, scripts and data files. If folder does not exist it is automatically created.  &lt;br /&gt;
&lt;br /&gt;
By default framework is looking for ETL scenarios in the '''HOME/data/scenario folder'''. If you want to change base folder for scenarios use -D property '''scenario.path'''.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/config/SystemConfig.java how ETL frameworks uses system folders.&lt;br /&gt;
&lt;br /&gt;
Look at the src/com/toolsverse/etl/core/config/EtlConfig.java how ETL frameworks uses ETL specific folders.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2014-12-22T16:43:25Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure sources are linked to the GET endpoints and destinations - to the PUT endpoints.&lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can include access tokens into the endpoint URLs. Example: https://host/rest/v1/data/?filter=123&amp;amp;access_token={access_token}. You will need to set access_token as a system property. Please see examples below:&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the PUT request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2014-12-22T16:42:12Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure sources are linked to the GET endpoints and destinations - to the PUT endpoints.&lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can include access tokens into the endpoint URLs. Example: https://host/rest/v1/data/?filter=123&amp;amp;access_token={access_token}&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the PUT request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2014-12-22T16:41:51Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure sources are linked to the GET endpoints and destinations - to the PUT endpoints.&lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can include access tokens into the endpoint URLs. Example: https://host/rest/v1/data/?filter=Id&amp;amp;access_token={access_token}&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the PUT request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2014-12-22T16:41:34Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure sources are linked to the GET endpoints and destinations - to the PUT endpoints.&lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can include access tokens into the endpoint URLs. Example: https://host/rest/v1/data/?filter=Id&amp;amp;access_token={access_token}&lt;br /&gt;
&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_get.shtml Example of the GET request]&lt;br /&gt;
[https://www.toolsverse.com/products/etl-framework/examples/web_services/http_put.shtml Example of the PUT request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2014-12-22T16:39:30Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure sources are linked to the GET endpoints and destinations - to the PUT endpoints.&lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;br /&gt;
&lt;br /&gt;
You can include access tokens into the endpoint URLs. Example: https://host/rest/v1/data/?filter=Id&amp;amp;access_token={access_token}&lt;br /&gt;
&lt;br /&gt;
[Example of the GET request]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Calling_REST_based_Web_services</id>
		<title>Calling REST based Web services</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Calling_REST_based_Web_services"/>
				<updated>2014-12-22T16:36:50Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: Created page with &amp;quot;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure sources are linked to the GET endpoints and destinations - t...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ETL Framework natively supports REST based Web services. You don't need to do anything special, just make sure sources are linked to the GET endpoints and destinations - to the PUT endpoints.&lt;br /&gt;
&lt;br /&gt;
Use JSON, XML or text to serialize datasets and objects.&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Main_Page"/>
				<updated>2014-12-22T16:32:17Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolsverse knowledge base ==&lt;br /&gt;
&lt;br /&gt;
=== ETL and Data Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[ETL scenario language]] &lt;br /&gt;
* [[Writing data integration and data migration scenarios]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/examples ETL Scenario Examples] &lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples Java Examples] &lt;br /&gt;
&lt;br /&gt;
=== Support Resources === &lt;br /&gt;
* [https://www.toolsverse.com/products/video-tutorials/ Video Tutorials] &lt;br /&gt;
* [https://www.toolsverse.com/products/case-studies/ Case Studies]&lt;br /&gt;
&lt;br /&gt;
== Products == &lt;br /&gt;
&lt;br /&gt;
=== ETL Framework ===&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/ Product page]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/feature-list.shtml Features]&lt;br /&gt;
* [[Installing and Configuring ETL Framework]]&lt;br /&gt;
* [[Redistribution and managing dependencies]]&lt;br /&gt;
* [[Building Source Code]]&lt;br /&gt;
* [[Using Eclipse]]&lt;br /&gt;
* [[Running ETL Scenarios]]&lt;br /&gt;
* [[Configuration file]]&lt;br /&gt;
* [[Calling REST based Web services]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples/ Embedding ETL Engine]&lt;br /&gt;
* [https://www.toolsverse.com/javadoc/ JavaDoc]&lt;br /&gt;
&lt;br /&gt;
=== Data Explorer ===&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/ Product Page]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/feature-list.shtml Features and Editions]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/docs/ User Guide]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Main_Page"/>
				<updated>2014-12-09T23:06:42Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolsverse knowledge base ==&lt;br /&gt;
&lt;br /&gt;
=== ETL and Data Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[ETL scenario language]] &lt;br /&gt;
* [[Writing data integration and data migration scenarios]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/examples ETL Scenario Examples] &lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples Java Examples] &lt;br /&gt;
&lt;br /&gt;
=== Support Resources === &lt;br /&gt;
* [https://www.toolsverse.com/products/video-tutorials/ Video Tutorials] &lt;br /&gt;
* [https://www.toolsverse.com/products/case-studies/ Case Studies]&lt;br /&gt;
&lt;br /&gt;
== Products == &lt;br /&gt;
&lt;br /&gt;
=== ETL Framework ===&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/ Product page]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/feature-list.shtml Features]&lt;br /&gt;
* [[Installing and Configuring ETL Framework]]&lt;br /&gt;
* [[Redistribution and managing dependencies]]&lt;br /&gt;
* [[Building Source Code]]&lt;br /&gt;
* [[Using Eclipse]]&lt;br /&gt;
* [[Running ETL Scenarios]]&lt;br /&gt;
* [[Configuration file]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples/ Embedding ETL Engine]&lt;br /&gt;
* [https://www.toolsverse.com/javadoc/ JavaDoc]&lt;br /&gt;
&lt;br /&gt;
=== Data Explorer ===&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/ Product Page]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/feature-list.shtml Features and Editions]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/docs/ User Guide]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Main_Page"/>
				<updated>2014-12-09T23:06:04Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolsverse knowledge base ==&lt;br /&gt;
&lt;br /&gt;
=== ETL and Data Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[ETL scenario language]] &lt;br /&gt;
* [[Writing data integration and data migration scenarios]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/examples ETL Scenario Examples] &lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples Java Examples] &lt;br /&gt;
&lt;br /&gt;
=== Support Resources === &lt;br /&gt;
* [https://www.toolsverse.com/products/video-tutorials/ Video Tutorials] &lt;br /&gt;
* [https://www.toolsverse.com/products/use-cases/ Case Studies]&lt;br /&gt;
&lt;br /&gt;
== Products == &lt;br /&gt;
&lt;br /&gt;
=== ETL Framework ===&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/ Product page]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/feature-list.shtml Features]&lt;br /&gt;
* [[Installing and Configuring ETL Framework]]&lt;br /&gt;
* [[Redistribution and managing dependencies]]&lt;br /&gt;
* [[Building Source Code]]&lt;br /&gt;
* [[Using Eclipse]]&lt;br /&gt;
* [[Running ETL Scenarios]]&lt;br /&gt;
* [[Configuration file]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples/ Embedding ETL Engine]&lt;br /&gt;
* [https://www.toolsverse.com/javadoc/ JavaDoc]&lt;br /&gt;
&lt;br /&gt;
=== Data Explorer ===&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/ Product Page]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/feature-list.shtml Features and Editions]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/docs/ User Guide]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Writing_data_integration_and_data_migration_scenarios</id>
		<title>Writing data integration and data migration scenarios</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Writing_data_integration_and_data_migration_scenarios"/>
				<updated>2014-10-29T18:38:28Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basic stuff ==&lt;br /&gt;
Any data integration or data migration process can be described as an extract-transform-load (ETL) or extract-load-transform (ELT). With that in mind, writing scenarios becomes a process of splitting task into extracts, loads and transformations. A scenario glues them all together and adds purpose and logic.&lt;br /&gt;
&lt;br /&gt;
[[http://www.toolsverse.com/products/etl-framework/ The ETL engine]] which powers Toolsverse products uses XML-based language to create scenarios. Before reading this page please take a look at [[ETL scenario language]] specification. XML is a natural choice because it enforces a structure: loads follow extracts and transformations follow extracts and loads. That said, you can chose to stream data, so extract and load are combined in one logical operation or run them in parallel so the actual order of extracts and loads is not guaranteed.&lt;br /&gt;
&lt;br /&gt;
The ETL engine makes it possible to concentrate on a task at hand without reinventing the wheel. It hides the complexity of data integration so in most cases the same techniques can be applied when working with any SQL and Non-SQL data sources. It is possible to use a full power of the target database and do things like direct data loads, parallel extracts, etc.&lt;br /&gt;
&lt;br /&gt;
Please take a look at the [http://www.toolsverse.com/products/etl-framework/examples ETL scenario examples].&lt;br /&gt;
&lt;br /&gt;
== Simple data migration scenario ==&lt;br /&gt;
&lt;br /&gt;
Let take a look at the simple data migration scenario:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scenario&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Migrate data&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;migrate_date&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;driver&amp;gt;auto&amp;lt;/driver&amp;gt;&lt;br /&gt;
     &amp;lt;sources&amp;gt;&lt;br /&gt;
          &amp;lt;source&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;extract&amp;gt;&lt;br /&gt;
                    &amp;lt;sql&amp;gt;select * from employee&amp;lt;/sql&amp;gt;&lt;br /&gt;
               &amp;lt;/extract&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;source&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;emp_resume&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;extract&amp;gt;&lt;br /&gt;
                    &amp;lt;sql&amp;gt;select * from emp_resume&amp;lt;/sql&amp;gt;&lt;br /&gt;
               &amp;lt;/extract&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;/sources&amp;gt;&lt;br /&gt;
     &amp;lt;destinations&amp;gt;&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;emp_resume&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
     &amp;lt;/destinations&amp;gt;&lt;br /&gt;
&amp;lt;/scenario&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example we:&lt;br /&gt;
# Extract all data from employee and emp_resume tables in the source database&lt;br /&gt;
# Load data into destination, which can be a database or files&lt;br /&gt;
# If destination tables don't exist create them on the fly (&amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt; flag) &lt;br /&gt;
&lt;br /&gt;
What we don't do:&lt;br /&gt;
# Specify what kind or source and destination we are working with&lt;br /&gt;
# How to connect to the source and destination &lt;br /&gt;
# How to create destination tables if they don't exist&lt;br /&gt;
&lt;br /&gt;
== Reading data from file-based data sources ==&lt;br /&gt;
In the previous example we created a simple data migration scenario which reads data from database using SQL and loads into another database or file-based data source.&lt;br /&gt;
&lt;br /&gt;
Reading data from file-based data sources as easy as writing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scenario&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Migrate data&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;migrate_date&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;driver&amp;gt;auto&amp;lt;/driver&amp;gt;&lt;br /&gt;
     &amp;lt;sources&amp;gt;&lt;br /&gt;
          &amp;lt;source&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;source&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;emp_resume&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;/sources&amp;gt;&lt;br /&gt;
     &amp;lt;destinations&amp;gt;&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;emp_resume&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
     &amp;lt;/destinations&amp;gt;&lt;br /&gt;
&amp;lt;/scenario&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example there is no SQL so engine assumes it needs to read data from the files. It doesn't matter what format files are in, as long as there is a suitable connector.&lt;br /&gt;
&lt;br /&gt;
ETL engine naively supports XML, JSON, CVS, Excel and many other formats.&lt;br /&gt;
&lt;br /&gt;
== Using Transformations ==&lt;br /&gt;
&lt;br /&gt;
If we assume that any source or destination has a dataset behind it adding a transformation is a basically attaching it to the source or destination. Transformations can be chained together. &lt;br /&gt;
&lt;br /&gt;
There are three types of transformations:&lt;br /&gt;
&lt;br /&gt;
# Column transformations: validation, add or exclude column, change column type, calculate column value&lt;br /&gt;
# Dataset transformations: set operations such as join, de-duplication, pivot, etc&lt;br /&gt;
# Dimension transformations: add dimension and extract dimension&lt;br /&gt;
&lt;br /&gt;
Transformations are event based and can be performed on:&lt;br /&gt;
* Before extract or load&lt;br /&gt;
* During extract or load (inline transformation)&lt;br /&gt;
* After extract or load&lt;br /&gt;
* After success or failure  &lt;br /&gt;
&lt;br /&gt;
'''Example of column transformations:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scenario parallel=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Column level transformations using JavaScript&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;column_transformations&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Extract data, change column name and value, add columns, remove columns&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;driver name=&amp;quot;com.toolsverse.etl.driver.GenericJdbcDriver&amp;quot; parent=&amp;quot;com.toolsverse.etl.driver.mysql.MySqlDriver&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;execute/&amp;gt;&lt;br /&gt;
     &amp;lt;sources&amp;gt;&lt;br /&gt;
          &amp;lt;source&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;extract&amp;gt;&lt;br /&gt;
                    &amp;lt;sql&amp;gt;select * from employee&amp;lt;/sql&amp;gt;&lt;br /&gt;
               &amp;lt;/extract&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
     &amp;lt;/sources&amp;gt;&lt;br /&gt;
     &amp;lt;destinations&amp;gt;&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;objectname&amp;gt;employee_date&amp;lt;/objectname&amp;gt;&lt;br /&gt;
               &amp;lt;metadata use=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;load stream=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;variables&amp;gt;&lt;br /&gt;
                    &amp;lt;HIREDATE nativetype=&amp;quot;int&amp;quot; sqltype=&amp;quot;2&amp;quot;&lt;br /&gt;
                         code=&amp;quot;if ({HIREDATE} != null) {value = new Date({HIREDATE}.getTime()).getFullYear();}&amp;quot;&lt;br /&gt;
                         field=&amp;quot;HIREDATE&amp;quot; lang=&amp;quot;JavaScript&amp;quot; name=&amp;quot;hire_year&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;SALARY exclude=&amp;quot;true&amp;quot; field=&amp;quot;SALARY&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;BONUS exclude=&amp;quot;true&amp;quot; field=&amp;quot;BONUS&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;COMPENSATION add=&amp;quot;true&amp;quot; nativetype=&amp;quot;int&amp;quot; sqltype=&amp;quot;2&amp;quot; name=&amp;quot;compensation&amp;quot; lang=&amp;quot;JavaScript&amp;quot;&lt;br /&gt;
                    code=&amp;quot;value = parseInt(dataSet.getFieldValue(currentRow, 'SALARY') + dataSet.getFieldValue(currentRow, 'BONUS'));&amp;quot; /&amp;gt;&lt;br /&gt;
                    &lt;br /&gt;
                    &amp;lt;test add=&amp;quot;true&amp;quot; nativetype=&amp;quot;varchar(100)&amp;quot;&lt;br /&gt;
                         sqltype=&amp;quot;12&amp;quot; value=&amp;quot;abc&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;test2 add=&amp;quot;true&amp;quot; nativetype=&amp;quot;varchar(100)&amp;quot;&lt;br /&gt;
                         sqltype=&amp;quot;12&amp;quot; value=&amp;quot;aaa&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;MIDINIT exclude=&amp;quot;true&amp;quot; field=&amp;quot;MIDINIT&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/variables&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
     &amp;lt;/destinations&amp;gt;&lt;br /&gt;
&amp;lt;/scenario&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example of dataset transformations:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scenario&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Diff datasets&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;diff&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;allow&amp;gt;EXTRACT_LOAD&amp;lt;/allow&amp;gt;&lt;br /&gt;
     &amp;lt;sources&amp;gt;&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;data_set_1&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;extract&amp;gt;&lt;br /&gt;
                    &amp;lt;reader&lt;br /&gt;
                         class=&amp;quot;com.toolsverse.etl.connector.excel.ExcelXlsxConnector&amp;quot;&lt;br /&gt;
                         filename=&amp;quot;{app.root.data}\demo\matrix.xlsx&amp;quot; sheetname=&amp;quot;norm&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/extract&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;data_set_2&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;extract&amp;gt;&lt;br /&gt;
                    &amp;lt;reader&lt;br /&gt;
                         class=&amp;quot;com.toolsverse.etl.connector.excel.ExcelXlsxConnector&amp;quot;&lt;br /&gt;
                         filename=&amp;quot;{app.root.data}\demo\matrix.xlsx&amp;quot; sheetname=&amp;quot;norm2&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/extract&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;data_set_only1&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;tasks&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;minus&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Minus&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;DRIVING value=&amp;quot;data_set_1&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;MINUS value=&amp;quot;data_set_2&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;add_column&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Pivot&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;FIELDS value=&amp;quot;dataset='first only'; first=first; last=last; course=course; year=year; address=address;&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
               &amp;lt;/tasks&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;data_set_only2&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;tasks&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;minus&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Minus&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;DRIVING value=&amp;quot;data_set_2&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;MINUS value=&amp;quot;data_set_1&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;add_column&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Pivot&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;FIELDS value=&amp;quot;dataset='second only'; first=first; last=last; course=course; year=year; address=address;&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
               &amp;lt;/tasks&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;data_set_12&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;tasks&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;intersect&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Intersect&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;DRIVING value=&amp;quot;data_set_2&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;INTERSECT value=&amp;quot;data_set_1&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;add_column&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Pivot&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;FIELDS value=&amp;quot;dataset='both'; first=first; last=last; course=course; year=year; address=address;&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
               &amp;lt;/tasks&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;first_and_second&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;tasks&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot; scope=&amp;quot;after&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;union&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Union&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;DRIVING value=&amp;quot;DATA_SET_ONLY1&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;UNION value=&amp;quot;DATA_SET_ONLY2&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;TYPE value=&amp;quot;union all&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
               &amp;lt;/tasks&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;first_second_both&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;tasks&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot; scope=&amp;quot;after&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;union&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Union&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;DRIVING value=&amp;quot;FIRST_AND_SECOND&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;UNION value=&amp;quot;DATA_SET_12&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;TYPE value=&amp;quot;union all&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
               &amp;lt;/tasks&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
     &amp;lt;/sources&amp;gt;&lt;br /&gt;
     &amp;lt;destinations&amp;gt;&lt;br /&gt;
          &amp;lt;destination noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;RESULT&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;source&amp;gt;FIRST_SECOND_BOTH&amp;lt;/source&amp;gt;&lt;br /&gt;
               &amp;lt;load&amp;gt;&lt;br /&gt;
                    &amp;lt;driver name=&amp;quot;com.toolsverse.etl.driver.GenericFileDriver&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;writer&lt;br /&gt;
                         class=&amp;quot;com.toolsverse.etl.connector.excel.ExcelXlsxConnector&amp;quot;&lt;br /&gt;
                         filename=&amp;quot;{app.root.data}\demo\matrix-output.xlsx&amp;quot; sheetname=&amp;quot;output&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/load&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
     &amp;lt;/destinations&amp;gt;&lt;br /&gt;
&amp;lt;/scenario&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using database specific features ==&lt;br /&gt;
&lt;br /&gt;
There are multiple techniques available to developers. In the example below we are using Oracle sql*plus and sql*loader to extract and load data. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scenario&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Oracle Extract using sql*plus and Load using sql*loader&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;oracle_sql_loader&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;driver&amp;gt;com.toolsverse.etl.driver.oracle.OracleDriver&amp;lt;/driver&amp;gt;&lt;br /&gt;
     &amp;lt;allow&amp;gt;EXTRACT_LOAD&amp;lt;/allow&amp;gt;&lt;br /&gt;
     &amp;lt;variables&amp;gt;&lt;br /&gt;
        &amp;lt;NAME label=&amp;quot;Property Name:&amp;quot; value = &amp;quot;name&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/variables&amp;gt;&lt;br /&gt;
     &amp;lt;tasks&amp;gt;&lt;br /&gt;
          &amp;lt;!-- truncate staging table using destination connection, ignore exception if table doesn't exist --&amp;gt;&lt;br /&gt;
          &amp;lt;task&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;drop_staging_table&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;connection&amp;gt;dest&amp;lt;/connection&amp;gt;&lt;br /&gt;
               &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.SqlTask&amp;lt;/class&amp;gt;&lt;br /&gt;
               &amp;lt;sql&amp;gt;&lt;br /&gt;
                   DROP TABLE config_property_stage;&lt;br /&gt;
               &amp;lt;/sql&amp;gt;&lt;br /&gt;
               &amp;lt;onexception action=&amp;quot;ignore&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/task&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;task&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;create_staging_table&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;connection&amp;gt;dest&amp;lt;/connection&amp;gt;&lt;br /&gt;
               &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.SqlTask&amp;lt;/class&amp;gt;&lt;br /&gt;
               &amp;lt;sql&amp;gt;&lt;br /&gt;
                   create TABLE config_property_stage&lt;br /&gt;
                   (&lt;br /&gt;
                     CONFIG_PROPERTY_NUM	NUMBER(18),&lt;br /&gt;
                     NAME	VARCHAR2(255),&lt;br /&gt;
                     DESCRIPTION	VARCHAR2(255)&lt;br /&gt;
                   );&lt;br /&gt;
               &amp;lt;/sql&amp;gt;&lt;br /&gt;
          &amp;lt;/task&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;task&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;config_property_extract&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;connection&amp;gt;source&amp;lt;/connection&amp;gt;&lt;br /&gt;
               &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.oracle.OracleExtractTask&amp;lt;/class&amp;gt;&lt;br /&gt;
               &amp;lt;sql&amp;gt;&lt;br /&gt;
                   select CONFIG_PROPERTY_NUM || '|' ||&lt;br /&gt;
                          NAME || '|' ||&lt;br /&gt;
                          DESCRIPTION&lt;br /&gt;
                   from config_property&lt;br /&gt;
                   where upper(name) like upper('%{NAME}%')&lt;br /&gt;
               &amp;lt;/sql&amp;gt;&lt;br /&gt;
          &amp;lt;/task&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;task&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;load&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;connection&amp;gt;dest&amp;lt;/connection&amp;gt;&lt;br /&gt;
               &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.oracle.OracleLoadTask&amp;lt;/class&amp;gt;&lt;br /&gt;
               &amp;lt;sql&amp;gt;&lt;br /&gt;
                       LOAD DATA&lt;br /&gt;
                       INFILE '{DATA_FOLDER}config_property_extract.dat'&lt;br /&gt;
                       APPEND INTO TABLE config_property_stage&lt;br /&gt;
                       FIELDS TERMINATED BY &amp;quot;|&amp;quot;&lt;br /&gt;
                       trailing nullcols&lt;br /&gt;
                       (&lt;br /&gt;
                          CONFIG_PROPERTY_NUM,&lt;br /&gt;
                          NAME,&lt;br /&gt;
                          DESCRIPTION&lt;br /&gt;
                       )&lt;br /&gt;
               &amp;lt;/sql&amp;gt;&lt;br /&gt;
          &amp;lt;/task&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
     &amp;lt;/tasks&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
     &amp;lt;destinations&amp;gt;&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;cfg_props&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt;&lt;br /&gt;
               &amp;lt;cursor table=&amp;quot;config_property_stage&amp;quot; onfinish=&amp;quot;drop&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
     &amp;lt;/destinations&amp;gt;&lt;br /&gt;
&amp;lt;/scenario&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Things to do ==&lt;br /&gt;
Typically a full blown data integration process includes at least extract and load. When everything said and done data from the source are moved to the destination. In some cases it makes sense to split process in steps which can be performed in the different time frames. For example you can:&lt;br /&gt;
# Extract data and store them in some intermediate format, for example XML.&lt;br /&gt;
# Load data sometime later.&lt;br /&gt;
&lt;br /&gt;
'''Example''':&lt;br /&gt;
&lt;br /&gt;
1. Extract&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   EtlConfig etlConfig = new EtlConfig();&lt;br /&gt;
            &lt;br /&gt;
   etlConfig.setAction(EtlConfig.EXTRACT);&lt;br /&gt;
&lt;br /&gt;
   EtlProcess etlProcess = new EtlProcess(EtlProcess.EtlMode.EMBEDDED);&lt;br /&gt;
&lt;br /&gt;
   EtlResponse response = engine.loadConfigAndExecute(etlConfig,&lt;br /&gt;
                    &amp;quot;test_etl_config.xml&amp;quot;, etlProcess);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Load&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   EtlConfig etlConfig = new EtlConfig();&lt;br /&gt;
            &lt;br /&gt;
   etlConfig.setAction(EtlConfig.LOAD);&lt;br /&gt;
&lt;br /&gt;
   EtlProcess etlProcess = new EtlProcess(EtlProcess.EtlMode.EMBEDDED);&lt;br /&gt;
&lt;br /&gt;
   EtlResponse response = engine.loadConfigAndExecute(etlConfig,&lt;br /&gt;
                    &amp;quot;test_etl_config.xml&amp;quot;, etlProcess);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Main_Page"/>
				<updated>2014-09-28T21:59:43Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolsverse knowledge base ==&lt;br /&gt;
&lt;br /&gt;
=== ETL and Data Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[ETL scenario language]] &lt;br /&gt;
* [[Writing data integration and data migration scenarios]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/examples ETL Scenario Examples] &lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples Java Examples] &lt;br /&gt;
&lt;br /&gt;
=== Support Resources === &lt;br /&gt;
* [https://www.toolsverse.com/products/video-tutorials/ Video Tutorials] &lt;br /&gt;
* [https://www.toolsverse.com/products/use-cases/ Use Cases]&lt;br /&gt;
&lt;br /&gt;
== Products == &lt;br /&gt;
&lt;br /&gt;
=== ETL Framework ===&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/ Product page]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/feature-list.shtml Features]&lt;br /&gt;
* [[Installing and Configuring ETL Framework]]&lt;br /&gt;
* [[Redistribution and managing dependencies]]&lt;br /&gt;
* [[Building Source Code]]&lt;br /&gt;
* [[Using Eclipse]]&lt;br /&gt;
* [[Running ETL Scenarios]]&lt;br /&gt;
* [[Configuration file]]&lt;br /&gt;
* [https://www.toolsverse.com/products/etl-framework/java-examples/ Embedding ETL Engine]&lt;br /&gt;
* [https://www.toolsverse.com/javadoc/ JavaDoc]&lt;br /&gt;
&lt;br /&gt;
=== Data Explorer ===&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/ Product Page]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/feature-list.shtml Features and Editions]&lt;br /&gt;
* [https://www.toolsverse.com/products/data-explorer/docs/ User Guide]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Writing_data_integration_and_data_migration_scenarios</id>
		<title>Writing data integration and data migration scenarios</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Writing_data_integration_and_data_migration_scenarios"/>
				<updated>2014-08-21T23:27:22Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Basic stuff ==&lt;br /&gt;
Any data integration or data migration process can be described as an extract-transform-load (ETL) or extract-load-transform (ELT). With that in mind, writing scenarios becomes a process of splitting task into extracts, loads and transformations. A scenario glues them all together and adds purpose and logic.&lt;br /&gt;
&lt;br /&gt;
[[http://www.toolsverse.com/products/etl-framework/ The ETL engine]] which powers Toolsverse products uses XML-based language to create scenarios. Before reading this page please take a look at [[ETL scenario language]] specification. XML is a natural choice because it enforces a structure: loads follow extracts and transformations follow extracts and loads. That said, you can chose to stream data, so extract and load are combined in one logical operation or run them in parallel so the actual order of extracts and loads is not guaranteed.&lt;br /&gt;
&lt;br /&gt;
The ETL engine makes it possible to concentrate on a task at hand without reinventing the wheel. It hides the complexity of data integration so in most cases the same techniques can be applied when working with any SQL and Non-SQL data sources. It is possible to use a full power of the target database and do things like direct data loads, parallel extracts, etc.&lt;br /&gt;
&lt;br /&gt;
Please take a look at the [http://www.toolsverse.com/products/etl-framework/examples ETL scenario examples].&lt;br /&gt;
&lt;br /&gt;
== Simple data migration scenario ==&lt;br /&gt;
&lt;br /&gt;
Let take a look at the simple data migration scenario:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scenario&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Migrate data&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;migrate_date&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;driver&amp;gt;auto&amp;lt;/driver&amp;gt;&lt;br /&gt;
     &amp;lt;sources&amp;gt;&lt;br /&gt;
          &amp;lt;source&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;extract&amp;gt;&lt;br /&gt;
                    &amp;lt;sql&amp;gt;select * from employee&amp;lt;/sql&amp;gt;&lt;br /&gt;
               &amp;lt;/extract&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;source&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;emp_resume&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;extract&amp;gt;&lt;br /&gt;
                    &amp;lt;sql&amp;gt;select * from emp_resume&amp;lt;/sql&amp;gt;&lt;br /&gt;
               &amp;lt;/extract&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;/sources&amp;gt;&lt;br /&gt;
     &amp;lt;destinations&amp;gt;&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;emp_resume&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
     &amp;lt;/destinations&amp;gt;&lt;br /&gt;
&amp;lt;/scenario&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example we:&lt;br /&gt;
# Extract all data from employee and emp_resume tables in the source database&lt;br /&gt;
# Load data into destination, which can be a database or files&lt;br /&gt;
# If destination tables don't exist create them on the fly (&amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt; flag) &lt;br /&gt;
&lt;br /&gt;
What we don't do:&lt;br /&gt;
# Specify what kind or source and destination we are working with&lt;br /&gt;
# How to connect to the source and destination &lt;br /&gt;
# How to create destination tables if they don't exist&lt;br /&gt;
&lt;br /&gt;
== Reading data from file-based data sources ==&lt;br /&gt;
In the previous example we created a simple data migration scenario which reads data from database using SQL and loads into another database or file-based data source.&lt;br /&gt;
&lt;br /&gt;
Reading data from file-based data sources as easy as writing:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scenario&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Migrate data&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;migrate_date&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;driver&amp;gt;auto&amp;lt;/driver&amp;gt;&lt;br /&gt;
     &amp;lt;sources&amp;gt;&lt;br /&gt;
          &amp;lt;source&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;source&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;emp_resume&amp;lt;/name&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
    &amp;lt;/sources&amp;gt;&lt;br /&gt;
     &amp;lt;destinations&amp;gt;&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;emp_resume&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
     &amp;lt;/destinations&amp;gt;&lt;br /&gt;
&amp;lt;/scenario&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example there is no SQL so engine assumes it needs to read data from the files. It doesn't matter what format files are in, as long as there is a suitable connector.&lt;br /&gt;
&lt;br /&gt;
ETL engine naively supports XML, JSON, CVS, Excel and many other formats.&lt;br /&gt;
&lt;br /&gt;
== Using Transformations ==&lt;br /&gt;
&lt;br /&gt;
If we assume that any source or destination has a dataset behind it adding a transformation is a basically attaching it to the source or destination. Transformations can be chained together. &lt;br /&gt;
&lt;br /&gt;
There are three types of transformations:&lt;br /&gt;
&lt;br /&gt;
# Column transformations: validation, add or exclude column, change column type, calculate column value&lt;br /&gt;
# Dataset transformations: set operations such as join, de-duplication, pivot, etc&lt;br /&gt;
# Dimension transformations: add dimension and extract dimension&lt;br /&gt;
&lt;br /&gt;
Transformations are event based and can be performed on:&lt;br /&gt;
* Before extract or load&lt;br /&gt;
* During extract or load (inline transformation)&lt;br /&gt;
* After extract or load&lt;br /&gt;
* After success or failure  &lt;br /&gt;
&lt;br /&gt;
'''Example of column transformations:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scenario parallel=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Column level transformations using JavaScript&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;column_transformations&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;description&amp;gt;Extract data, change column name and value, add columns, remove columns&amp;lt;/description&amp;gt;&lt;br /&gt;
     &amp;lt;driver name=&amp;quot;com.toolsverse.etl.driver.GenericJdbcDriver&amp;quot; parent=&amp;quot;com.toolsverse.etl.driver.mysql.MySqlDriver&amp;quot;/&amp;gt;&lt;br /&gt;
     &amp;lt;execute/&amp;gt;&lt;br /&gt;
     &amp;lt;sources&amp;gt;&lt;br /&gt;
          &amp;lt;source&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;extract&amp;gt;&lt;br /&gt;
                    &amp;lt;sql&amp;gt;select * from employee&amp;lt;/sql&amp;gt;&lt;br /&gt;
               &amp;lt;/extract&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
     &amp;lt;/sources&amp;gt;&lt;br /&gt;
     &amp;lt;destinations&amp;gt;&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;employee&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;objectname&amp;gt;employee_date&amp;lt;/objectname&amp;gt;&lt;br /&gt;
               &amp;lt;metadata use=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;load stream=&amp;quot;true&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;variables&amp;gt;&lt;br /&gt;
                    &amp;lt;HIREDATE nativetype=&amp;quot;int&amp;quot; sqltype=&amp;quot;2&amp;quot;&lt;br /&gt;
                         code=&amp;quot;if ({HIREDATE} != null) {value = new Date({HIREDATE}.getTime()).getFullYear();}&amp;quot;&lt;br /&gt;
                         field=&amp;quot;HIREDATE&amp;quot; lang=&amp;quot;JavaScript&amp;quot; name=&amp;quot;hire_year&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;SALARY exclude=&amp;quot;true&amp;quot; field=&amp;quot;SALARY&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;BONUS exclude=&amp;quot;true&amp;quot; field=&amp;quot;BONUS&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
                    &amp;lt;COMPENSATION add=&amp;quot;true&amp;quot; nativetype=&amp;quot;int&amp;quot; sqltype=&amp;quot;2&amp;quot; name=&amp;quot;compensation&amp;quot; lang=&amp;quot;JavaScript&amp;quot;&lt;br /&gt;
                    code=&amp;quot;value = parseInt(dataSet.getFieldValue(currentRow, 'SALARY') + dataSet.getFieldValue(currentRow, 'BONUS'));&amp;quot; /&amp;gt;&lt;br /&gt;
                    &lt;br /&gt;
                    &amp;lt;test add=&amp;quot;true&amp;quot; nativetype=&amp;quot;varchar(100)&amp;quot;&lt;br /&gt;
                         sqltype=&amp;quot;12&amp;quot; value=&amp;quot;abc&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;test2 add=&amp;quot;true&amp;quot; nativetype=&amp;quot;varchar(100)&amp;quot;&lt;br /&gt;
                         sqltype=&amp;quot;12&amp;quot; value=&amp;quot;aaa&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;MIDINIT exclude=&amp;quot;true&amp;quot; field=&amp;quot;MIDINIT&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/variables&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
     &amp;lt;/destinations&amp;gt;&lt;br /&gt;
&amp;lt;/scenario&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example of dataset transformations:'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scenario&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Diff datasets&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;diff&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;allow&amp;gt;EXTRACT_LOAD&amp;lt;/allow&amp;gt;&lt;br /&gt;
     &amp;lt;sources&amp;gt;&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;data_set_1&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;extract&amp;gt;&lt;br /&gt;
                    &amp;lt;reader&lt;br /&gt;
                         class=&amp;quot;com.toolsverse.etl.connector.excel.ExcelXlsxConnector&amp;quot;&lt;br /&gt;
                         filename=&amp;quot;{app.root.data}\demo\matrix.xlsx&amp;quot; sheetname=&amp;quot;norm&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/extract&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;data_set_2&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;extract&amp;gt;&lt;br /&gt;
                    &amp;lt;reader&lt;br /&gt;
                         class=&amp;quot;com.toolsverse.etl.connector.excel.ExcelXlsxConnector&amp;quot;&lt;br /&gt;
                         filename=&amp;quot;{app.root.data}\demo\matrix.xlsx&amp;quot; sheetname=&amp;quot;norm2&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/extract&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;data_set_only1&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;tasks&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;minus&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Minus&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;DRIVING value=&amp;quot;data_set_1&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;MINUS value=&amp;quot;data_set_2&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;add_column&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Pivot&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;FIELDS value=&amp;quot;dataset='first only'; first=first; last=last; course=course; year=year; address=address;&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
               &amp;lt;/tasks&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;data_set_only2&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;tasks&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;minus&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Minus&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;DRIVING value=&amp;quot;data_set_2&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;MINUS value=&amp;quot;data_set_1&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;add_column&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Pivot&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;FIELDS value=&amp;quot;dataset='second only'; first=first; last=last; course=course; year=year; address=address;&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
               &amp;lt;/tasks&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;data_set_12&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;tasks&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;intersect&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Intersect&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;DRIVING value=&amp;quot;data_set_2&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;INTERSECT value=&amp;quot;data_set_1&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;add_column&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Pivot&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;FIELDS value=&amp;quot;dataset='both'; first=first; last=last; course=course; year=year; address=address;&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
               &amp;lt;/tasks&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;first_and_second&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;tasks&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot; scope=&amp;quot;after&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;union&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Union&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;DRIVING value=&amp;quot;DATA_SET_ONLY1&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;UNION value=&amp;quot;DATA_SET_ONLY2&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;TYPE value=&amp;quot;union all&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
               &amp;lt;/tasks&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;source noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;first_second_both&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;tasks&amp;gt;&lt;br /&gt;
                    &amp;lt;task noconnection=&amp;quot;true&amp;quot; scope=&amp;quot;after&amp;quot;&amp;gt;&lt;br /&gt;
                         &amp;lt;name&amp;gt;union&amp;lt;/name&amp;gt;&lt;br /&gt;
                         &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.Union&amp;lt;/class&amp;gt;&lt;br /&gt;
                         &amp;lt;variables&amp;gt;&lt;br /&gt;
                              &amp;lt;DRIVING value=&amp;quot;FIRST_AND_SECOND&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;UNION value=&amp;quot;DATA_SET_12&amp;quot;/&amp;gt;&lt;br /&gt;
                              &amp;lt;TYPE value=&amp;quot;union all&amp;quot;/&amp;gt;&lt;br /&gt;
                         &amp;lt;/variables&amp;gt;&lt;br /&gt;
                    &amp;lt;/task&amp;gt;&lt;br /&gt;
               &amp;lt;/tasks&amp;gt;&lt;br /&gt;
          &amp;lt;/source&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
     &amp;lt;/sources&amp;gt;&lt;br /&gt;
     &amp;lt;destinations&amp;gt;&lt;br /&gt;
          &amp;lt;destination noconnection=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;RESULT&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;source&amp;gt;FIRST_SECOND_BOTH&amp;lt;/source&amp;gt;&lt;br /&gt;
               &amp;lt;load&amp;gt;&lt;br /&gt;
                    &amp;lt;driver name=&amp;quot;com.toolsverse.etl.driver.GenericFileDriver&amp;quot;/&amp;gt;&lt;br /&gt;
                    &amp;lt;writer&lt;br /&gt;
                         class=&amp;quot;com.toolsverse.etl.connector.excel.ExcelXlsxConnector&amp;quot;&lt;br /&gt;
                         filename=&amp;quot;{app.root.data}\demo\matrix-output.xlsx&amp;quot; sheetname=&amp;quot;output&amp;quot;/&amp;gt;&lt;br /&gt;
               &amp;lt;/load&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
     &amp;lt;/destinations&amp;gt;&lt;br /&gt;
&amp;lt;/scenario&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using database specific features ==&lt;br /&gt;
&lt;br /&gt;
There are multiple techniques available to developers. In the example below we are using Oracle sql*plus and sql*loader to extract and load data. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;
&amp;lt;scenario&amp;gt;&lt;br /&gt;
     &amp;lt;name&amp;gt;Oracle Extract using sql*plus and Load using sql*loader&amp;lt;/name&amp;gt;&lt;br /&gt;
     &amp;lt;script&amp;gt;oracle_sql_loader&amp;lt;/script&amp;gt;&lt;br /&gt;
     &amp;lt;driver&amp;gt;com.toolsverse.etl.driver.oracle.OracleDriver&amp;lt;/driver&amp;gt;&lt;br /&gt;
     &amp;lt;allow&amp;gt;EXTRACT_LOAD&amp;lt;/allow&amp;gt;&lt;br /&gt;
     &amp;lt;variables&amp;gt;&lt;br /&gt;
        &amp;lt;NAME label=&amp;quot;Property Name:&amp;quot; value = &amp;quot;name&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/variables&amp;gt;&lt;br /&gt;
     &amp;lt;tasks&amp;gt;&lt;br /&gt;
          &amp;lt;!-- truncate staging table using destination connection, ignore exception if table doesn't exist --&amp;gt;&lt;br /&gt;
          &amp;lt;task&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;drop_staging_table&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;connection&amp;gt;dest&amp;lt;/connection&amp;gt;&lt;br /&gt;
               &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.SqlTask&amp;lt;/class&amp;gt;&lt;br /&gt;
               &amp;lt;sql&amp;gt;&lt;br /&gt;
                   DROP TABLE config_property_stage;&lt;br /&gt;
               &amp;lt;/sql&amp;gt;&lt;br /&gt;
               &amp;lt;onexception action=&amp;quot;ignore&amp;quot;/&amp;gt;&lt;br /&gt;
          &amp;lt;/task&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;task&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;create_staging_table&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;connection&amp;gt;dest&amp;lt;/connection&amp;gt;&lt;br /&gt;
               &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.common.SqlTask&amp;lt;/class&amp;gt;&lt;br /&gt;
               &amp;lt;sql&amp;gt;&lt;br /&gt;
                   create TABLE config_property_stage&lt;br /&gt;
                   (&lt;br /&gt;
                     CONFIG_PROPERTY_NUM	NUMBER(18),&lt;br /&gt;
                     NAME	VARCHAR2(255),&lt;br /&gt;
                     DESCRIPTION	VARCHAR2(255)&lt;br /&gt;
                   );&lt;br /&gt;
               &amp;lt;/sql&amp;gt;&lt;br /&gt;
          &amp;lt;/task&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;task&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;config_property_extract&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;connection&amp;gt;source&amp;lt;/connection&amp;gt;&lt;br /&gt;
               &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.oracle.OracleExtractTask&amp;lt;/class&amp;gt;&lt;br /&gt;
               &amp;lt;sql&amp;gt;&lt;br /&gt;
                   select CONFIG_PROPERTY_NUM || '|' ||&lt;br /&gt;
                          NAME || '|' ||&lt;br /&gt;
                          DESCRIPTION&lt;br /&gt;
                   from config_property&lt;br /&gt;
                   where upper(name) like upper('%{NAME}%')&lt;br /&gt;
               &amp;lt;/sql&amp;gt;&lt;br /&gt;
          &amp;lt;/task&amp;gt;&lt;br /&gt;
&lt;br /&gt;
          &amp;lt;task&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;load&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;connection&amp;gt;dest&amp;lt;/connection&amp;gt;&lt;br /&gt;
               &amp;lt;class&amp;gt;com.toolsverse.etl.core.task.oracle.OracleLoadTask&amp;lt;/class&amp;gt;&lt;br /&gt;
               &amp;lt;sql&amp;gt;&lt;br /&gt;
                       LOAD DATA&lt;br /&gt;
                       INFILE '{DATA_FOLDER}config_property_extract.dat'&lt;br /&gt;
                       APPEND INTO TABLE config_property_stage&lt;br /&gt;
                       FIELDS TERMINATED BY &amp;quot;|&amp;quot;&lt;br /&gt;
                       trailing nullcols&lt;br /&gt;
                       (&lt;br /&gt;
                          CONFIG_PROPERTY_NUM,&lt;br /&gt;
                          NAME,&lt;br /&gt;
                          DESCRIPTION&lt;br /&gt;
                       )&lt;br /&gt;
               &amp;lt;/sql&amp;gt;&lt;br /&gt;
          &amp;lt;/task&amp;gt;&lt;br /&gt;
          &lt;br /&gt;
     &amp;lt;/tasks&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
     &amp;lt;destinations&amp;gt;&lt;br /&gt;
          &amp;lt;destination&amp;gt;&lt;br /&gt;
               &amp;lt;name&amp;gt;cfg_props&amp;lt;/name&amp;gt;&lt;br /&gt;
               &amp;lt;metadata&amp;gt;true&amp;lt;/metadata&amp;gt;&lt;br /&gt;
               &amp;lt;cursor table=&amp;quot;config_property_stage&amp;quot; onfinish=&amp;quot;drop&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/destination&amp;gt;&lt;br /&gt;
     &amp;lt;/destinations&amp;gt;&lt;br /&gt;
&amp;lt;/scenario&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Things to do ==&lt;br /&gt;
Typically a full blown data integration process includes at least extract and load. When everything said and done data from the source are moved to the destination. In some cases it makes sense to split process in steps which can performed in the different time frames. For example you can:&lt;br /&gt;
# Extract data and store them in some intermediate format, for example XML.&lt;br /&gt;
# Load data sometime later.&lt;br /&gt;
&lt;br /&gt;
'''Example''':&lt;br /&gt;
&lt;br /&gt;
1. Extract&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   EtlConfig etlConfig = new EtlConfig();&lt;br /&gt;
            &lt;br /&gt;
   etlConfig.setAction(EtlConfig.EXTRACT);&lt;br /&gt;
&lt;br /&gt;
   EtlProcess etlProcess = new EtlProcess(EtlProcess.EtlMode.EMBEDDED);&lt;br /&gt;
&lt;br /&gt;
   EtlResponse response = engine.loadConfigAndExecute(etlConfig,&lt;br /&gt;
                    &amp;quot;test_etl_config.xml&amp;quot;, etlProcess);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2. Load&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
   EtlConfig etlConfig = new EtlConfig();&lt;br /&gt;
            &lt;br /&gt;
   etlConfig.setAction(EtlConfig.LOAD);&lt;br /&gt;
&lt;br /&gt;
   EtlProcess etlProcess = new EtlProcess(EtlProcess.EtlMode.EMBEDDED);&lt;br /&gt;
&lt;br /&gt;
   EtlResponse response = engine.loadConfigAndExecute(etlConfig,&lt;br /&gt;
                    &amp;quot;test_etl_config.xml&amp;quot;, etlProcess);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/ETL_scenario_language</id>
		<title>ETL scenario language</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/ETL_scenario_language"/>
				<updated>2014-08-14T03:59:43Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ETL scenarios must be written in XML-based language.   &lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&lt;br /&gt;
* ETL scenario must be a [http://en.wikipedia.org/wiki/Well-formed_document well formed XML]. Check out official [http://www.w3.org/TR/REC-xml/ XML specification]  &lt;br /&gt;
* For [http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references special characters] which are not allowed in the well formed XML use correct XML substitutions&lt;br /&gt;
* All node and attribute names are case sensitive &lt;br /&gt;
* Values generally are '''not''' case sensitive except class names &lt;br /&gt;
* Class names must be fully qualified. For example com.toolsverse.etl.driver.oracle.OracleDriver&lt;br /&gt;
* Order of nodes in the node list matters. For examples if there are multiple &amp;lt;task&amp;gt; nodes under &amp;lt;tasks&amp;gt; they will be executed in order&lt;br /&gt;
* For comments use &amp;lt;pre&amp;gt;&amp;lt;!-- text --&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Language Artifacts ==&lt;br /&gt;
&lt;br /&gt;
* '''scenario''' - root node in XML. Used to define global attributes such as scenario name, description, script name, etc. Includes other nodes. Variables under scenario used to define global input parameters which can be used to parameterize scenario.  &lt;br /&gt;
* '''execute''' - root node for inner scenarios.  &lt;br /&gt;
* '''scenario''' - inner scenario under &amp;lt;execute&amp;gt;. Inner scenario is a sort of sub program executed as a part of owner's scenario.  &lt;br /&gt;
* '''sources''' - root node for all sources.&lt;br /&gt;
* '''source''' - &amp;quot;extract from&amp;quot; object. Can include transformations and tasks which performed on the &amp;quot;extract from&amp;quot; object. Variables under source used to set dataset variables. &lt;br /&gt;
* '''destinations''' - root node for all destinations.&lt;br /&gt;
* '''destination''' - &amp;quot;load into&amp;quot; object. Can include transformations and tasks which performed on the &amp;quot;load into&amp;quot; object. Variables under destination used to define destination columns.&lt;br /&gt;
* '''tasks''' - root node for tasks.   &lt;br /&gt;
* '''task''' - transformation performed on the source and destination or common task such as operation system command, etc. Variables under task used to define task parameters.&lt;br /&gt;
* '''beforetasks''' - root node for tasks executed before first extract&lt;br /&gt;
* '''aftertasks''' - root node for tasks executed after last load&lt;br /&gt;
* '''variables''' - root node for scenario, source, destination or task variables&lt;br /&gt;
* '''VARIABLE''' (UPPER-CASED variable name) - scenario's, source's, destination's or task's variable&lt;br /&gt;
&lt;br /&gt;
== Rules ==&lt;br /&gt;
&lt;br /&gt;
* If attribute has multiple possible values (for example parallel=&amp;quot;false|true&amp;quot;) the pipe (&amp;quot;|&amp;quot;) character is used as a delimiter&lt;br /&gt;
* First value in the pipe delimited string is a default value. For example in the pair &amp;quot;false|true&amp;quot; &amp;quot;false&amp;quot; is a default. &lt;br /&gt;
* Most nodes and attributes are not required. The required nodes and attributes specifically marked using '''''bold-italic''''' font &lt;br /&gt;
* If parent node is not required (for example &amp;lt;task&amp;gt;) but child is (for example &amp;lt;name&amp;gt;) it just means that you can skip entire section (for example &amp;lt;task&amp;gt;) but if it is there certain nodes and attributes must be there as well (for example &amp;lt;name&amp;gt;)&lt;br /&gt;
* If node (or attribute) is not required but it is present and there is no value, the default value will be used. If there is no default value the node or attribute will be skipped &lt;br /&gt;
* Some nodes have short and long forms, for example &amp;lt;driver&amp;gt;class_name&amp;lt;/driver&amp;gt; vs &amp;lt;driver attributes /&amp;gt;. You can use either short or long form but not both&lt;br /&gt;
* Some nodes and attributes have multiple synonyms, for example &amp;lt;tasks|beforetasks&amp;gt; (node) and sql|code (attribute)&lt;br /&gt;
* Attribute value &amp;quot;int&amp;quot; means that attribute value should be an integer&lt;br /&gt;
* Attribute value &amp;quot;sql&amp;quot; means that attribute value should be SQL &lt;br /&gt;
* Attribute value &amp;quot;code&amp;quot; means that attribute value should be code in one of the supported scripting languages (for example JavaScript) or SQL &lt;br /&gt;
* For boolean attributes &amp;quot;false|true&amp;quot; it is also possible to use (case insensitive) yes|no, y,|n, 1|0&lt;br /&gt;
* '''empty|something''' or '''|something''' for node or attribute value means that there is a default value which is rarely getting changed so it is better to skip this node or attribute&lt;br /&gt;
* '''attributes''' means any valid XML attribute or list of attributes&lt;br /&gt;
&lt;br /&gt;
== ETL scenario parser == &lt;br /&gt;
&lt;br /&gt;
If there is a syntax error parser generates an exception. In most cases (but not all) parser is able to identify position of the error. &lt;br /&gt;
* If ETL scenario is not a well formed XML parser generates an exception pointing out to the part of the XML which is not well formed&lt;br /&gt;
* Parser always checks one error at the time, meaning if there are multiple errors it generates exception for the first found error &lt;br /&gt;
* Parser checks all required nodes and attributes and if one of them is missing it generates an exception pointing out to the missing node or attribute &lt;br /&gt;
* Parser checks all nodes and attributes defined by specification and if there is something it doesn't recognize (for example &amp;lt;dest&amp;gt; instead of &amp;lt;destination&amp;gt;) it generates an exception pointing out to the wrong node or attribute&lt;br /&gt;
* In some cases (for example attributes and child nodes of the &amp;lt;variable_name&amp;gt; node) basically any attribute or parent node is allowed (including not defined by specification). In this case parser let it go and does not generate an exception&lt;br /&gt;
* If wrong attribute value is used (for example varcharsize=&amp;quot;abc&amp;quot; instead of varcharsize=&amp;quot;123&amp;quot;) or there is an attribute but there is no value (for example varcharsize=&amp;quot;&amp;quot;) the default value is used instead. If there is no default value the attribute is skipped&lt;br /&gt;
* Is some cases, when node or attribute value is a class name parser will try to load class immediately. If class does not exist parser generates appropriate exception &lt;br /&gt;
* If short form of the node is used (for example &amp;lt;driver&amp;gt;name&amp;lt;/driver&amp;gt; instead of &amp;lt;driver attributes /&amp;gt; the default values for the attributes are used&lt;br /&gt;
&lt;br /&gt;
== Nodes and attributes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;'''''[[scenario]]''''' [[parallel]]=&amp;quot;false|true&amp;quot; [[requiresource]]=&amp;quot;false|true&amp;quot; [[requiredest]]=&amp;quot;false|true&amp;quot; [[notemp]]=&amp;quot;false|true&amp;quot; &amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[source name|name]]'''''&amp;gt;scenario name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[description]]&amp;gt;scenario description&amp;lt;/description&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[script]]'''''&amp;gt;script name&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source_driver]]&amp;gt;auto|driver_class_name&amp;lt;/source_driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onsave]] [[action]]=&amp;quot;skip|save&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpopulate]] [[action]]=&amp;quot;skip|save&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpersist]] [[action]]=&amp;quot;skip|save&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexecute]] [[action]]=&amp;quot;|commit&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[allow]]&amp;gt;LOAD|EXTRACT|EXTRACT_LOAD&amp;lt;/allow&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[function]]&amp;gt;function_class_name&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[metadata]] [[types]]=&amp;quot;&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[codegen]]&amp;gt;code_generator_class_name&amp;lt;/codegen&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[label]]=&amp;quot;label&amp;quot; [[sql]]=&amp;quot;sql&amp;quot; [[type]]=&amp;quot;type&amp;quot; [[global]]=&amp;quot;true|false&amp;quot; [[attributes]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_nodes]]/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variable_name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[execute]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[scenario]] '''''[[name]]'''''=&amp;quot;inner_scenario_name&amp;quot; [[action]]=&amp;quot;LOAD|EXTRACT|EXTRACT_LOAD&amp;quot; [[parallel]]=&amp;quot;false|true&amp;quot; [[loop]]=&amp;quot;code&amp;quot; [[count]]=&amp;quot;int&amp;quot; [[variable]]=&amp;quot;var_name&amp;quot; [[pattern]]=&amp;quot;pattern&amp;quot; [[field]]=&amp;quot;field_name&amp;quot; [[looplang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[loop_connection]]=&amp;quot;connection name&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[conditionlang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[condition_connection]]=&amp;quot;connection name&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/execute&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tasks]]|[[beforetasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;       &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[class]]'''''&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/tasks|beforetasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sources]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source]] [[independent]]=&amp;quot;false|true&amp;quot; [[noconnection]]=&amp;quot;false|true&amp;quot; [[empty]]=&amp;quot;false|true&amp;quot; [[mandatory]]=&amp;quot;false|true&amp;quot; [[encode]]=&amp;quot;false|true&amp;quot; [[enabled]]=&amp;quot;true|false&amp;quot; [[parallel]]=&amp;quot;false|true&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[conditionlang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[condition_connection]]=&amp;quot;connection name&amp;quot; [[keyfield]]=&amp;quot;coma_delimited_key_columns_to_update&amp;quot; [[updatekey]]=&amp;quot;false|true&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;source name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[objectname]]|[[tablename]]&amp;gt;object or table name&amp;lt;/objectname|tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpersist]] [[action]]=&amp;quot;save|skip&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpopulate]] [[action]]=&amp;quot;save|skip&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source]]&amp;gt;linked source name&amp;lt;/source&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[extract]] [[limit]]=&amp;quot;int&amp;quot; [[keyname]]=&amp;quot;key name&amp;quot; [[keyfield]]=&amp;quot;key fields&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]]&amp;gt;writer_class_name&amp;lt;/writer&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]]&amp;gt;reader_class_name&amp;lt;/reader&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;source connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]&amp;gt;sql&amp;lt;/sql&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[statement]]&amp;gt;empty|prepared|callable&amp;lt;/statement&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[indexes]]&amp;gt;coma_delimited_list_of_output_&lt;br /&gt;
param_indexes&amp;lt;/indexes&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise|ignoreparseerror&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/extract&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot; [[scope]]=&amp;quot;after|pre|inline|before_etl&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[class]]'''''&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/tasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/source&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/sources&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[destinations]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[destination]] [[encode]]=&amp;quot;false|true&amp;quot; [[empty]]=&amp;quot;false|true&amp;quot; [[tolerate]]=&amp;quot;false|true&amp;quot; [[noconnection]]=&amp;quot;false|true&amp;quot; [[type]]=&amp;quot;regular|procedure|function|wait|table&amp;quot; [[enabled]]=&amp;quot;true|false&amp;quot; [[parallel]]=&amp;quot;false|true&amp;quot; [[scope]]=&amp;quot;global|single&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[conditionlang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[condition_connection]]=&amp;quot;connection name&amp;quot;&amp;gt; [[source]]=&amp;quot;false|true&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;destination name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source]]&amp;gt;linked source name&amp;lt;/source&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[objectname]]|[[tablename]]&amp;gt;object or table name&amp;lt;/objectname|tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[cursor]] [[table]]=&amp;quot;table name&amp;quot; [[sql]]=&amp;quot;sql&amp;quot; [[type]]=&amp;quot;regular|temp|temporary&amp;quot; [[onfinish]]=&amp;quot;keep|drop&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[metadata]]&amp;gt;true|false&amp;lt;/metadata&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[metadata]] [[indexes]]=&amp;quot;false|true&amp;quot; [[suffix]]=&amp;quot;suffix&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[load]] [[stream]]=&amp;quot;false|true&amp;quot; [[key]]=&amp;quot;keys&amp;quot; [[action]]=&amp;quot;insert|update|delete|merge|conditional&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[bind]]=&amp;quot;false|true&amp;quot; [[window]]=&amp;quot;int&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;destination connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''name'''''=&amp;quot;auto|driver_class_name&amp;quot; parent=&amp;quot;parent_driver_class_name&amp;quot; literalsize=&amp;quot;int&amp;quot; varcharsize=&amp;quot;int&amp;quot; charsize=&amp;quot;int&amp;quot; precision=&amp;quot;int&amp;quot; scale=&amp;quot;int&amp;quot; lineslimit=&amp;quot;int&amp;quot; initsql=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[condition]]&amp;gt;sql&amp;lt;/condition&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[then]]&amp;gt;sql&amp;lt;/then&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[else]]&amp;gt;sql&amp;lt;/else&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[after]]&amp;gt;sql&amp;lt;/after&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]&amp;gt;sql&amp;lt;/sql&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|merge|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; [[key]]=&amp;quot;keys&amp;quot; [[savepoint]]=&amp;quot;false|true&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]]&amp;gt;reader_class_name&amp;lt;/reader&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]]&amp;gt;writer_class_name&amp;lt;/writer&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[tablename]]=&amp;quot;table name&amp;quot; [[function]]=&amp;quot;function&amp;quot; [[class]]=&amp;quot;function_class_name&amp;quot; [[field]]=&amp;quot;field&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[sql]]|[[code]]=&amp;quot;sql|code&amp;quot; [[lang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[type]]=&amp;quot;sql&amp;quot; [[linked]]=&amp;quot;linked var name&amp;quot; [[label]]=&amp;quot;label&amp;quot; [[param]]=&amp;quot;params&amp;quot; [[scope]]=&amp;quot;before|after|runtime&amp;quot; [[destination]]=&amp;quot;linked destination name&amp;quot; [[tolerate]]=&amp;quot;false|true&amp;quot; [[include]]=&amp;quot;true|false&amp;quot; [[exclude]]=&amp;quot;false|true&amp;quot; [[add]]=&amp;quot;false|true&amp;quot; [[global]]=&amp;quot;false|true&amp;quot; [[declare]]=&amp;quot;sql&amp;quot; [[sqltype]]=&amp;quot;sqltype&amp;quot; [[nativetype]]=&amp;quot;nativetype&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[cache]]&amp;gt;'''''cache_class_name'''''&amp;lt;/cache&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/load&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot; [[scope]]=&amp;quot;after|pre|inline|before_etl&amp;quot; &amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[class]]&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/tasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
             &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/destination&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/destinations&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[aftertasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;       &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[class]]'''''&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/aftertasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/scenario&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Main_Page"/>
				<updated>2014-08-05T17:29:59Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolsverse knowledge base ==&lt;br /&gt;
&lt;br /&gt;
=== ETL and Data Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[ETL scenario language]] &lt;br /&gt;
* [[Writing data integration and data migration scenarios]]&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/examples ETL Scenario Examples] &lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/java-examples Java Examples] &lt;br /&gt;
&lt;br /&gt;
=== Support Resources === &lt;br /&gt;
* [http://www.toolsverse.com/products/video-tutorials/ Video Tutorials] &lt;br /&gt;
* [http://www.toolsverse.com/products/use-cases/ Use Cases]&lt;br /&gt;
&lt;br /&gt;
== Products == &lt;br /&gt;
&lt;br /&gt;
=== ETL Framework ===&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/ Product page]&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/feature-list.shtml Features]&lt;br /&gt;
* [[Installing and Configuring ETL Framework]]&lt;br /&gt;
* [[Redistribution and managing dependencies]]&lt;br /&gt;
* [[Building Source Code]]&lt;br /&gt;
* [[Using Eclipse]]&lt;br /&gt;
* [[Running ETL Scenarios]]&lt;br /&gt;
* [[Configuration file]]&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/java-examples/ Embedding ETL Engine]&lt;br /&gt;
* [http://www.toolsverse.com/javadoc/ JavaDoc]&lt;br /&gt;
&lt;br /&gt;
=== Data Explorer ===&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/ Product Page]&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/feature-list.shtml Features and Editions]&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/docs/ User Guide]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Main_Page"/>
				<updated>2014-08-05T17:25:23Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolsverse knowledge base ==&lt;br /&gt;
&lt;br /&gt;
=== ETL and Data Integration ===&lt;br /&gt;
&lt;br /&gt;
* [[ETL scenario language]] &lt;br /&gt;
* [[Writing data integration and data migration scenarios]]&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/examples ETL Scenario Examples] &lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/java-examples Java Examples] &lt;br /&gt;
&lt;br /&gt;
=== Support Resources === &lt;br /&gt;
* [http://www.toolsverse.com/products/video-tutorials/ Video Tutorials] &lt;br /&gt;
* [http://www.toolsverse.com/products/use-cases/ Use Cases]&lt;br /&gt;
&lt;br /&gt;
== Products == &lt;br /&gt;
&lt;br /&gt;
=== Data Explorer ===&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/ Product Page]&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/feature-list.shtml Features and Editions]&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/docs/ User Guide]&lt;br /&gt;
&lt;br /&gt;
=== ETL Framework ===&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/ Product page]&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/feature-list.shtml Features]&lt;br /&gt;
* [[Installing and Configuring ETL Framework]]&lt;br /&gt;
* [[Redistribution and managing dependencies]]&lt;br /&gt;
* [[Building Source Code]]&lt;br /&gt;
* [[Using Eclipse]]&lt;br /&gt;
* [[Running ETL Scenarios]]&lt;br /&gt;
* [[Configuration file]]&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/java-examples/ Embedding ETL Engine]&lt;br /&gt;
* [http://www.toolsverse.com/javadoc/ JavaDoc]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Main_Page"/>
				<updated>2014-08-05T17:24:01Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolsverse knowledge base ==&lt;br /&gt;
&lt;br /&gt;
=== ETL and Data Integration ===&lt;br /&gt;
&lt;br /&gt;
==== [[ETL scenario language]] ====&lt;br /&gt;
==== [[Writing data integration and data migration scenarios]] ====&lt;br /&gt;
==== [http://www.toolsverse.com/products/etl-framework/examples ETL Scenario Examples] ====&lt;br /&gt;
==== [http://www.toolsverse.com/products/etl-framework/java-examples Java Examples] ====&lt;br /&gt;
&lt;br /&gt;
=== Support Resources === &lt;br /&gt;
==== [http://www.toolsverse.com/products/video-tutorials/ Video Tutorials] ====&lt;br /&gt;
==== [http://www.toolsverse.com/products/use-cases/ Use Cases] ====&lt;br /&gt;
&lt;br /&gt;
== Products == &lt;br /&gt;
&lt;br /&gt;
=== Data Explorer ===&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/ Product Page]&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/feature-list.shtml Features and Editions]&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/docs/ User Guide]&lt;br /&gt;
&lt;br /&gt;
=== ETL Framework ===&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/ Product page]&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/feature-list.shtml Features]&lt;br /&gt;
* [[Installing and Configuring ETL Framework]]&lt;br /&gt;
* [[Redistribution and managing dependencies]]&lt;br /&gt;
* [[Building Source Code]]&lt;br /&gt;
* [[Using Eclipse]]&lt;br /&gt;
* [[Running ETL Scenarios]]&lt;br /&gt;
* [[Configuration file]]&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/java-examples/ Embedding ETL Engine]&lt;br /&gt;
* [http://www.toolsverse.com/javadoc/ JavaDoc]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Main_Page"/>
				<updated>2014-08-05T17:23:13Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolsverse knowledge base ==&lt;br /&gt;
&lt;br /&gt;
=== ETL and Data Integration ===&lt;br /&gt;
&lt;br /&gt;
==== [[ETL scenario language]] ====&lt;br /&gt;
==== [[Writing data integration and data migration scenarios]] ====&lt;br /&gt;
==== [http://www.toolsverse.com/products/etl-framework/examples ETL Scenario Examples] ====&lt;br /&gt;
==== [http://www.toolsverse.com/products/etl-framework/java-examples Java Examples] ====&lt;br /&gt;
&lt;br /&gt;
=== Support Resources === &lt;br /&gt;
* [http://www.toolsverse.com/products/video-tutorials/ Video Tutorials]&lt;br /&gt;
* [http://www.toolsverse.com/products/use-cases/ Use Cases]&lt;br /&gt;
&lt;br /&gt;
== Products == &lt;br /&gt;
&lt;br /&gt;
=== Data Explorer ===&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/ Product Page]&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/feature-list.shtml Features and Editions]&lt;br /&gt;
* [http://www.toolsverse.com/products/data-explorer/docs/ User Guide]&lt;br /&gt;
&lt;br /&gt;
=== ETL Framework ===&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/ Product page]&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/feature-list.shtml Features]&lt;br /&gt;
* [[Installing and Configuring ETL Framework]]&lt;br /&gt;
* [[Redistribution and managing dependencies]]&lt;br /&gt;
* [[Building Source Code]]&lt;br /&gt;
* [[Using Eclipse]]&lt;br /&gt;
* [[Running ETL Scenarios]]&lt;br /&gt;
* [[Configuration file]]&lt;br /&gt;
* [http://www.toolsverse.com/products/etl-framework/java-examples/ Embedding ETL Engine]&lt;br /&gt;
* [http://www.toolsverse.com/javadoc/ JavaDoc]&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/ETL_scenario_language</id>
		<title>ETL scenario language</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/ETL_scenario_language"/>
				<updated>2014-08-05T17:11:56Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ETL scenarios must be written in XML-based language.   &lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&lt;br /&gt;
* ETL scenario must be a [http://en.wikipedia.org/wiki/Well-formed_document well formed XML]. Check out official [http://www.w3.org/TR/REC-xml/ XML specification]  &lt;br /&gt;
* For [http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references special characters] which are not allowed in the well formed XML use correct XML substitutions&lt;br /&gt;
* All node and attribute names are case sensitive &lt;br /&gt;
* Values generally are '''not''' case sensitive except class names &lt;br /&gt;
* Class names must be fully qualified. For example com.toolsverse.etl.driver.oracle.OracleDriver&lt;br /&gt;
* Order of nodes in the node list matters. For examples if there are multiple &amp;lt;task&amp;gt; nodes under &amp;lt;tasks&amp;gt; they will be executed in order&lt;br /&gt;
* For comments use &amp;lt;pre&amp;gt;&amp;lt;!-- text --&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Language Artifacts ==&lt;br /&gt;
&lt;br /&gt;
* '''scenario''' - root node in XML. Used to define global attributes such as scenario name, description, script name, etc. Includes other nodes. Variables under scenario used to define global input parameters which can be used to parameterize scenario.  &lt;br /&gt;
* '''execute''' - root node for inner scenarios.  &lt;br /&gt;
* '''scenario''' - inner scenario under &amp;lt;execute&amp;gt;. Inner scenario is a sort of sub program executed as a part of owner's scenario.  &lt;br /&gt;
* '''sources''' - root node for all sources.&lt;br /&gt;
* '''source''' - &amp;quot;extract from&amp;quot; object. Can include transformations and tasks which performed on the &amp;quot;extract from&amp;quot; object. Variables under source used to set dataset variables. &lt;br /&gt;
* '''destinations''' - root node for all destinations.&lt;br /&gt;
* '''destination''' - &amp;quot;load into&amp;quot; object. Can include transformations and tasks which performed on the &amp;quot;load into&amp;quot; object. Variables under destination used to define destination columns.&lt;br /&gt;
* '''tasks''' - root node for tasks.   &lt;br /&gt;
* '''task''' - transformation performed on the source and destination or common task such as operation system command, etc. Variables under task used to define task parameters.&lt;br /&gt;
* '''beforetasks''' - root node for tasks executed before first extract&lt;br /&gt;
* '''aftertasks''' - root node for tasks executed after last load&lt;br /&gt;
* '''variables''' - root node for scenario, source, destination or task variables&lt;br /&gt;
* '''VARIABLE''' (UPPER-CASED variable name) - scenario's, source's, destination's or task's variable&lt;br /&gt;
&lt;br /&gt;
== Rules ==&lt;br /&gt;
&lt;br /&gt;
* If attribute has multiple possible values (for example parallel=&amp;quot;false|true&amp;quot;) the pipe (&amp;quot;|&amp;quot;) character is used as a delimiter&lt;br /&gt;
* First value in the pipe delimited string is a default value. For example in the pair &amp;quot;false|true&amp;quot; &amp;quot;false&amp;quot; is a default. &lt;br /&gt;
* Most nodes and attributes are not required. The required nodes and attributes specifically marked using '''''bold-italic''''' font &lt;br /&gt;
* If parent node is not required (for example &amp;lt;task&amp;gt;) but child is (for example &amp;lt;name&amp;gt;) it just means that you can skip entire section (for example &amp;lt;task&amp;gt;) but if it is there certain nodes and attributes must be there as well (for example &amp;lt;name&amp;gt;)&lt;br /&gt;
* If node (or attribute) is not required but it is present and there is no value, the default value will be used. If there is no default value the node or attribute will be skipped &lt;br /&gt;
* Some nodes have short and long forms, for example &amp;lt;driver&amp;gt;class_name&amp;lt;/driver&amp;gt; vs &amp;lt;driver attributes /&amp;gt;. You can use either short or long form but not both&lt;br /&gt;
* Some nodes and attributes have multiple synonyms, for example &amp;lt;tasks|beforetasks&amp;gt; (node) and sql|code (attribute)&lt;br /&gt;
* Attribute value &amp;quot;int&amp;quot; means that attribute value should be an integer&lt;br /&gt;
* Attribute value &amp;quot;sql&amp;quot; means that attribute value should be SQL &lt;br /&gt;
* Attribute value &amp;quot;code&amp;quot; means that attribute value should be code in one of the supported scripting languages (for example JavaScript) or SQL &lt;br /&gt;
* For boolean attributes &amp;quot;false|true&amp;quot; it is also possible to use (case insensitive) yes|no, y,|n, 1|0&lt;br /&gt;
* '''empty|something''' or '''|something''' for node or attribute value means that there is a default value which is rarely getting changed so it is better to skip this node or attribute&lt;br /&gt;
* '''attributes''' means any valid XML attribute or list of attributes&lt;br /&gt;
&lt;br /&gt;
== ETL scenario parser == &lt;br /&gt;
&lt;br /&gt;
If there is a syntax error parser generates an exception. In most cases (but not all) parser is able to identify position of the error. &lt;br /&gt;
* If ETL scenario is not a well formed XML parser generates an exception pointing out to the part of the XML which is not well formed&lt;br /&gt;
* Parser always checks one error at the time, meaning if there are multiple errors it generates exception for the first found error &lt;br /&gt;
* Parser checks all required nodes and attributes and if one of them is missing it generates an exception pointing out to the missing node or attribute &lt;br /&gt;
* Parser checks all nodes and attributes defined by specification and if there is something it doesn't recognize (for example &amp;lt;dest&amp;gt; instead of &amp;lt;destination&amp;gt;) it generates an exception pointing out to the wrong node or attribute&lt;br /&gt;
* In some cases (for example attributes and child nodes of the &amp;lt;variable_name&amp;gt; node) basically any attribute or parent node is allowed (including not defined by specification). In this case parser let it go and does not generate an exception&lt;br /&gt;
* If wrong attribute value is used (for example varcharsize=&amp;quot;abc&amp;quot; instead of varcharsize=&amp;quot;123&amp;quot;) or there is an attribute but there is no value (for example varcharsize=&amp;quot;&amp;quot;) the default value is used instead. If there is no default value the attribute is skipped&lt;br /&gt;
* Is some cases, when node or attribute value is a class name parser will try to load class immediately. If class does not exist parser generates appropriate exception &lt;br /&gt;
* If short form of the node is used (for example &amp;lt;driver&amp;gt;name&amp;lt;/driver&amp;gt; instead of &amp;lt;driver attributes /&amp;gt; the default values for the attributes are used&lt;br /&gt;
&lt;br /&gt;
== Nodes and attributes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;'''''[[scenario]]''''' [[parallel]]=&amp;quot;false|true&amp;quot; [[requiresource]]=&amp;quot;false|true&amp;quot; [[requiredest]]=&amp;quot;false|true&amp;quot; [[notemp]]=&amp;quot;false|true&amp;quot; &amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[source name|name]]'''''&amp;gt;scenario name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[description]]&amp;gt;scenario description&amp;lt;/description&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[script]]'''''&amp;gt;script name&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source_driver]]&amp;gt;auto|driver_class_name&amp;lt;/source_driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onsave]] [[action]]=&amp;quot;skip|save&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpopulate]] [[action]]=&amp;quot;skip|save&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpersist]] [[action]]=&amp;quot;skip|save&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexecute]] [[action]]=&amp;quot;|commit&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[allow]]&amp;gt;LOAD|EXTRACT|EXTRACT_LOAD&amp;lt;/allow&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[function]]&amp;gt;function_class_name&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[metadata]] [[types]]=&amp;quot;&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[codegen]]&amp;gt;code_generator_class_name&amp;lt;/codegen&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[label]]=&amp;quot;label&amp;quot; [[sql]]=&amp;quot;sql&amp;quot; [[type]]=&amp;quot;type&amp;quot; [[global]]=&amp;quot;true|false&amp;quot; [[attributes]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_nodes]]/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variable_name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[execute]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[scenario]] '''''[[name]]'''''=&amp;quot;inner_scenario_name&amp;quot; [[action]]=&amp;quot;LOAD|EXTRACT|EXTRACT_LOAD&amp;quot; [[parallel]]=&amp;quot;false|true&amp;quot; [[loop]]=&amp;quot;code&amp;quot; [[count]]=&amp;quot;int&amp;quot; [[variable]]=&amp;quot;var_name&amp;quot; [[pattern]]=&amp;quot;pattern&amp;quot; [[field]]=&amp;quot;field_name&amp;quot; [[looplang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[loop_connection]]=&amp;quot;connection name&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[conditionlang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[condition_connection]]=&amp;quot;connection name&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/execute&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tasks]]|[[beforetasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;       &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[class]]'''''&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/tasks|beforetasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sources]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source]] [[independent]]=&amp;quot;false|true&amp;quot; [[noconnection]]=&amp;quot;false|true&amp;quot; [[empty]]=&amp;quot;false|true&amp;quot; [[mandatory]]=&amp;quot;false|true&amp;quot; [[encode]]=&amp;quot;false|true&amp;quot; [[enabled]]=&amp;quot;true|false&amp;quot; [[parallel]]=&amp;quot;false|true&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[conditionlang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[condition_connection]]=&amp;quot;connection name&amp;quot; [[keyfield]]=&amp;quot;coma_delimited_key_columns_to_update&amp;quot; [[updatekey]]=&amp;quot;false|true&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;source name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[objectname]]|[[tablename]]&amp;gt;object or table name&amp;lt;/objectname|tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpersist]] [[action]]=&amp;quot;save|skip&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpopulate]] [[action]]=&amp;quot;save|skip&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source]]&amp;gt;linked source name&amp;lt;/source&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[extract]] [[keyname]]=&amp;quot;key name&amp;quot; [[keyfield]]=&amp;quot;key fields&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]]&amp;gt;writer_class_name&amp;lt;/writer&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]]&amp;gt;reader_class_name&amp;lt;/reader&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;source connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]&amp;gt;sql&amp;lt;/sql&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[statement]]&amp;gt;empty|prepared|callable&amp;lt;/statement&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[indexes]]&amp;gt;coma_delimited_list_of_output_&lt;br /&gt;
param_indexes&amp;lt;/indexes&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise|ignoreparseerror&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/extract&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot; [[scope]]=&amp;quot;after|pre|inline|before_etl&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[class]]'''''&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/tasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/source&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/sources&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[destinations]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[destination]] [[encode]]=&amp;quot;false|true&amp;quot; [[empty]]=&amp;quot;false|true&amp;quot; [[tolerate]]=&amp;quot;false|true&amp;quot; [[noconnection]]=&amp;quot;false|true&amp;quot; [[type]]=&amp;quot;regular|procedure|function|wait|table&amp;quot; [[enabled]]=&amp;quot;true|false&amp;quot; [[parallel]]=&amp;quot;false|true&amp;quot; [[scope]]=&amp;quot;global|single&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[conditionlang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[condition_connection]]=&amp;quot;connection name&amp;quot;&amp;gt; [[source]]=&amp;quot;false|true&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;destination name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source]]&amp;gt;linked source name&amp;lt;/source&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[objectname]]|[[tablename]]&amp;gt;object or table name&amp;lt;/objectname|tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[cursor]] [[table]]=&amp;quot;table name&amp;quot; [[sql]]=&amp;quot;sql&amp;quot; [[type]]=&amp;quot;regular|temp|temporary&amp;quot; [[onfinish]]=&amp;quot;keep|drop&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[metadata]]&amp;gt;true|false&amp;lt;/metadata&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[metadata]] [[indexes]]=&amp;quot;false|true&amp;quot; [[suffix]]=&amp;quot;suffix&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[load]] [[stream]]=&amp;quot;false|true&amp;quot; [[key]]=&amp;quot;keys&amp;quot; [[action]]=&amp;quot;insert|update|delete|merge|conditional&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[bind]]=&amp;quot;false|true&amp;quot; [[window]]=&amp;quot;int&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;destination connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''name'''''=&amp;quot;auto|driver_class_name&amp;quot; parent=&amp;quot;parent_driver_class_name&amp;quot; literalsize=&amp;quot;int&amp;quot; varcharsize=&amp;quot;int&amp;quot; charsize=&amp;quot;int&amp;quot; precision=&amp;quot;int&amp;quot; scale=&amp;quot;int&amp;quot; lineslimit=&amp;quot;int&amp;quot; initsql=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[condition]]&amp;gt;sql&amp;lt;/condition&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[then]]&amp;gt;sql&amp;lt;/then&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[else]]&amp;gt;sql&amp;lt;/else&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[after]]&amp;gt;sql&amp;lt;/after&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]&amp;gt;sql&amp;lt;/sql&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|merge|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; [[key]]=&amp;quot;keys&amp;quot; [[savepoint]]=&amp;quot;false|true&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]]&amp;gt;reader_class_name&amp;lt;/reader&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]]&amp;gt;writer_class_name&amp;lt;/writer&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[tablename]]=&amp;quot;table name&amp;quot; [[function]]=&amp;quot;function&amp;quot; [[class]]=&amp;quot;function_class_name&amp;quot; [[field]]=&amp;quot;field&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[sql]]|[[code]]=&amp;quot;sql|code&amp;quot; [[lang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[type]]=&amp;quot;sql&amp;quot; [[linked]]=&amp;quot;linked var name&amp;quot; [[label]]=&amp;quot;label&amp;quot; [[param]]=&amp;quot;params&amp;quot; [[scope]]=&amp;quot;before|after|runtime&amp;quot; [[destination]]=&amp;quot;linked destination name&amp;quot; [[tolerate]]=&amp;quot;false|true&amp;quot; [[include]]=&amp;quot;true|false&amp;quot; [[exclude]]=&amp;quot;false|true&amp;quot; [[add]]=&amp;quot;false|true&amp;quot; [[global]]=&amp;quot;false|true&amp;quot; [[declare]]=&amp;quot;sql&amp;quot; [[sqltype]]=&amp;quot;sqltype&amp;quot; [[nativetype]]=&amp;quot;nativetype&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[cache]]&amp;gt;'''''cache_class_name'''''&amp;lt;/cache&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/load&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot; [[scope]]=&amp;quot;after|pre|inline|before_etl&amp;quot; &amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[class]]&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/tasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
             &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/destination&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/destinations&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[aftertasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;       &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[class]]'''''&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/aftertasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/scenario&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/ETL_scenario_language</id>
		<title>ETL scenario language</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/ETL_scenario_language"/>
				<updated>2014-08-05T17:11:39Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{FULLPAGENAME}}&lt;br /&gt;
&lt;br /&gt;
ETL scenarios must be written in XML-based language.   &lt;br /&gt;
&lt;br /&gt;
== Language ==&lt;br /&gt;
&lt;br /&gt;
* ETL scenario must be a [http://en.wikipedia.org/wiki/Well-formed_document well formed XML]. Check out official [http://www.w3.org/TR/REC-xml/ XML specification]  &lt;br /&gt;
* For [http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references special characters] which are not allowed in the well formed XML use correct XML substitutions&lt;br /&gt;
* All node and attribute names are case sensitive &lt;br /&gt;
* Values generally are '''not''' case sensitive except class names &lt;br /&gt;
* Class names must be fully qualified. For example com.toolsverse.etl.driver.oracle.OracleDriver&lt;br /&gt;
* Order of nodes in the node list matters. For examples if there are multiple &amp;lt;task&amp;gt; nodes under &amp;lt;tasks&amp;gt; they will be executed in order&lt;br /&gt;
* For comments use &amp;lt;pre&amp;gt;&amp;lt;!-- text --&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Language Artifacts ==&lt;br /&gt;
&lt;br /&gt;
* '''scenario''' - root node in XML. Used to define global attributes such as scenario name, description, script name, etc. Includes other nodes. Variables under scenario used to define global input parameters which can be used to parameterize scenario.  &lt;br /&gt;
* '''execute''' - root node for inner scenarios.  &lt;br /&gt;
* '''scenario''' - inner scenario under &amp;lt;execute&amp;gt;. Inner scenario is a sort of sub program executed as a part of owner's scenario.  &lt;br /&gt;
* '''sources''' - root node for all sources.&lt;br /&gt;
* '''source''' - &amp;quot;extract from&amp;quot; object. Can include transformations and tasks which performed on the &amp;quot;extract from&amp;quot; object. Variables under source used to set dataset variables. &lt;br /&gt;
* '''destinations''' - root node for all destinations.&lt;br /&gt;
* '''destination''' - &amp;quot;load into&amp;quot; object. Can include transformations and tasks which performed on the &amp;quot;load into&amp;quot; object. Variables under destination used to define destination columns.&lt;br /&gt;
* '''tasks''' - root node for tasks.   &lt;br /&gt;
* '''task''' - transformation performed on the source and destination or common task such as operation system command, etc. Variables under task used to define task parameters.&lt;br /&gt;
* '''beforetasks''' - root node for tasks executed before first extract&lt;br /&gt;
* '''aftertasks''' - root node for tasks executed after last load&lt;br /&gt;
* '''variables''' - root node for scenario, source, destination or task variables&lt;br /&gt;
* '''VARIABLE''' (UPPER-CASED variable name) - scenario's, source's, destination's or task's variable&lt;br /&gt;
&lt;br /&gt;
== Rules ==&lt;br /&gt;
&lt;br /&gt;
* If attribute has multiple possible values (for example parallel=&amp;quot;false|true&amp;quot;) the pipe (&amp;quot;|&amp;quot;) character is used as a delimiter&lt;br /&gt;
* First value in the pipe delimited string is a default value. For example in the pair &amp;quot;false|true&amp;quot; &amp;quot;false&amp;quot; is a default. &lt;br /&gt;
* Most nodes and attributes are not required. The required nodes and attributes specifically marked using '''''bold-italic''''' font &lt;br /&gt;
* If parent node is not required (for example &amp;lt;task&amp;gt;) but child is (for example &amp;lt;name&amp;gt;) it just means that you can skip entire section (for example &amp;lt;task&amp;gt;) but if it is there certain nodes and attributes must be there as well (for example &amp;lt;name&amp;gt;)&lt;br /&gt;
* If node (or attribute) is not required but it is present and there is no value, the default value will be used. If there is no default value the node or attribute will be skipped &lt;br /&gt;
* Some nodes have short and long forms, for example &amp;lt;driver&amp;gt;class_name&amp;lt;/driver&amp;gt; vs &amp;lt;driver attributes /&amp;gt;. You can use either short or long form but not both&lt;br /&gt;
* Some nodes and attributes have multiple synonyms, for example &amp;lt;tasks|beforetasks&amp;gt; (node) and sql|code (attribute)&lt;br /&gt;
* Attribute value &amp;quot;int&amp;quot; means that attribute value should be an integer&lt;br /&gt;
* Attribute value &amp;quot;sql&amp;quot; means that attribute value should be SQL &lt;br /&gt;
* Attribute value &amp;quot;code&amp;quot; means that attribute value should be code in one of the supported scripting languages (for example JavaScript) or SQL &lt;br /&gt;
* For boolean attributes &amp;quot;false|true&amp;quot; it is also possible to use (case insensitive) yes|no, y,|n, 1|0&lt;br /&gt;
* '''empty|something''' or '''|something''' for node or attribute value means that there is a default value which is rarely getting changed so it is better to skip this node or attribute&lt;br /&gt;
* '''attributes''' means any valid XML attribute or list of attributes&lt;br /&gt;
&lt;br /&gt;
== ETL scenario parser == &lt;br /&gt;
&lt;br /&gt;
If there is a syntax error parser generates an exception. In most cases (but not all) parser is able to identify position of the error. &lt;br /&gt;
* If ETL scenario is not a well formed XML parser generates an exception pointing out to the part of the XML which is not well formed&lt;br /&gt;
* Parser always checks one error at the time, meaning if there are multiple errors it generates exception for the first found error &lt;br /&gt;
* Parser checks all required nodes and attributes and if one of them is missing it generates an exception pointing out to the missing node or attribute &lt;br /&gt;
* Parser checks all nodes and attributes defined by specification and if there is something it doesn't recognize (for example &amp;lt;dest&amp;gt; instead of &amp;lt;destination&amp;gt;) it generates an exception pointing out to the wrong node or attribute&lt;br /&gt;
* In some cases (for example attributes and child nodes of the &amp;lt;variable_name&amp;gt; node) basically any attribute or parent node is allowed (including not defined by specification). In this case parser let it go and does not generate an exception&lt;br /&gt;
* If wrong attribute value is used (for example varcharsize=&amp;quot;abc&amp;quot; instead of varcharsize=&amp;quot;123&amp;quot;) or there is an attribute but there is no value (for example varcharsize=&amp;quot;&amp;quot;) the default value is used instead. If there is no default value the attribute is skipped&lt;br /&gt;
* Is some cases, when node or attribute value is a class name parser will try to load class immediately. If class does not exist parser generates appropriate exception &lt;br /&gt;
* If short form of the node is used (for example &amp;lt;driver&amp;gt;name&amp;lt;/driver&amp;gt; instead of &amp;lt;driver attributes /&amp;gt; the default values for the attributes are used&lt;br /&gt;
&lt;br /&gt;
== Nodes and attributes ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;'''''[[scenario]]''''' [[parallel]]=&amp;quot;false|true&amp;quot; [[requiresource]]=&amp;quot;false|true&amp;quot; [[requiredest]]=&amp;quot;false|true&amp;quot; [[notemp]]=&amp;quot;false|true&amp;quot; &amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[source name|name]]'''''&amp;gt;scenario name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[description]]&amp;gt;scenario description&amp;lt;/description&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[script]]'''''&amp;gt;script name&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source_driver]]&amp;gt;auto|driver_class_name&amp;lt;/source_driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onsave]] [[action]]=&amp;quot;skip|save&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpopulate]] [[action]]=&amp;quot;skip|save&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpersist]] [[action]]=&amp;quot;skip|save&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexecute]] [[action]]=&amp;quot;|commit&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[allow]]&amp;gt;LOAD|EXTRACT|EXTRACT_LOAD&amp;lt;/allow&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[function]]&amp;gt;function_class_name&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[metadata]] [[types]]=&amp;quot;&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[codegen]]&amp;gt;code_generator_class_name&amp;lt;/codegen&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[label]]=&amp;quot;label&amp;quot; [[sql]]=&amp;quot;sql&amp;quot; [[type]]=&amp;quot;type&amp;quot; [[global]]=&amp;quot;true|false&amp;quot; [[attributes]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_nodes]]/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variable_name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[execute]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[scenario]] '''''[[name]]'''''=&amp;quot;inner_scenario_name&amp;quot; [[action]]=&amp;quot;LOAD|EXTRACT|EXTRACT_LOAD&amp;quot; [[parallel]]=&amp;quot;false|true&amp;quot; [[loop]]=&amp;quot;code&amp;quot; [[count]]=&amp;quot;int&amp;quot; [[variable]]=&amp;quot;var_name&amp;quot; [[pattern]]=&amp;quot;pattern&amp;quot; [[field]]=&amp;quot;field_name&amp;quot; [[looplang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[loop_connection]]=&amp;quot;connection name&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[conditionlang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[condition_connection]]=&amp;quot;connection name&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/execute&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tasks]]|[[beforetasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;       &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[class]]'''''&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/tasks|beforetasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sources]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source]] [[independent]]=&amp;quot;false|true&amp;quot; [[noconnection]]=&amp;quot;false|true&amp;quot; [[empty]]=&amp;quot;false|true&amp;quot; [[mandatory]]=&amp;quot;false|true&amp;quot; [[encode]]=&amp;quot;false|true&amp;quot; [[enabled]]=&amp;quot;true|false&amp;quot; [[parallel]]=&amp;quot;false|true&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[conditionlang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[condition_connection]]=&amp;quot;connection name&amp;quot; [[keyfield]]=&amp;quot;coma_delimited_key_columns_to_update&amp;quot; [[updatekey]]=&amp;quot;false|true&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;source name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[objectname]]|[[tablename]]&amp;gt;object or table name&amp;lt;/objectname|tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpersist]] [[action]]=&amp;quot;save|skip&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onpopulate]] [[action]]=&amp;quot;save|skip&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source]]&amp;gt;linked source name&amp;lt;/source&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[extract]] [[keyname]]=&amp;quot;key name&amp;quot; [[keyfield]]=&amp;quot;key fields&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]]&amp;gt;writer_class_name&amp;lt;/writer&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]]&amp;gt;reader_class_name&amp;lt;/reader&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;source connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]&amp;gt;sql&amp;lt;/sql&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[statement]]&amp;gt;empty|prepared|callable&amp;lt;/statement&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[indexes]]&amp;gt;coma_delimited_list_of_output_&lt;br /&gt;
param_indexes&amp;lt;/indexes&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise|ignoreparseerror&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/extract&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot; [[scope]]=&amp;quot;after|pre|inline|before_etl&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[class]]'''''&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/tasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/source&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/sources&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[destinations]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[destination]] [[encode]]=&amp;quot;false|true&amp;quot; [[empty]]=&amp;quot;false|true&amp;quot; [[tolerate]]=&amp;quot;false|true&amp;quot; [[noconnection]]=&amp;quot;false|true&amp;quot; [[type]]=&amp;quot;regular|procedure|function|wait|table&amp;quot; [[enabled]]=&amp;quot;true|false&amp;quot; [[parallel]]=&amp;quot;false|true&amp;quot; [[scope]]=&amp;quot;global|single&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[conditionlang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[condition_connection]]=&amp;quot;connection name&amp;quot;&amp;gt; [[source]]=&amp;quot;false|true&amp;quot;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;destination name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[source]]&amp;gt;linked source name&amp;lt;/source&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[objectname]]|[[tablename]]&amp;gt;object or table name&amp;lt;/objectname|tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[cursor]] [[table]]=&amp;quot;table name&amp;quot; [[sql]]=&amp;quot;sql&amp;quot; [[type]]=&amp;quot;regular|temp|temporary&amp;quot; [[onfinish]]=&amp;quot;keep|drop&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[metadata]]&amp;gt;true|false&amp;lt;/metadata&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[metadata]] [[indexes]]=&amp;quot;false|true&amp;quot; [[suffix]]=&amp;quot;suffix&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[load]] [[stream]]=&amp;quot;false|true&amp;quot; [[key]]=&amp;quot;keys&amp;quot; [[action]]=&amp;quot;insert|update|delete|merge|conditional&amp;quot; [[condition]]=&amp;quot;code&amp;quot; [[bind]]=&amp;quot;false|true&amp;quot; [[window]]=&amp;quot;int&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;destination connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''name'''''=&amp;quot;auto|driver_class_name&amp;quot; parent=&amp;quot;parent_driver_class_name&amp;quot; literalsize=&amp;quot;int&amp;quot; varcharsize=&amp;quot;int&amp;quot; charsize=&amp;quot;int&amp;quot; precision=&amp;quot;int&amp;quot; scale=&amp;quot;int&amp;quot; lineslimit=&amp;quot;int&amp;quot; initsql=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[condition]]&amp;gt;sql&amp;lt;/condition&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[then]]&amp;gt;sql&amp;lt;/then&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[else]]&amp;gt;sql&amp;lt;/else&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[after]]&amp;gt;sql&amp;lt;/after&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;    &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]&amp;gt;sql&amp;lt;/sql&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|merge|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; [[key]]=&amp;quot;keys&amp;quot; [[savepoint]]=&amp;quot;false|true&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[reader]]&amp;gt;reader_class_name&amp;lt;/reader&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]] '''''[[class]]'''''=&amp;quot;writer_class_name&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;   &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[writer]]&amp;gt;writer_class_name&amp;lt;/writer&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[tablename]]=&amp;quot;table name&amp;quot; [[function]]=&amp;quot;function&amp;quot; [[class]]=&amp;quot;function_class_name&amp;quot; [[field]]=&amp;quot;field&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[sql]]|[[code]]=&amp;quot;sql|code&amp;quot; [[lang]]=&amp;quot;SQL|JavaScript|Others&amp;quot; [[type]]=&amp;quot;sql&amp;quot; [[linked]]=&amp;quot;linked var name&amp;quot; [[label]]=&amp;quot;label&amp;quot; [[param]]=&amp;quot;params&amp;quot; [[scope]]=&amp;quot;before|after|runtime&amp;quot; [[destination]]=&amp;quot;linked destination name&amp;quot; [[tolerate]]=&amp;quot;false|true&amp;quot; [[include]]=&amp;quot;true|false&amp;quot; [[exclude]]=&amp;quot;false|true&amp;quot; [[add]]=&amp;quot;false|true&amp;quot; [[global]]=&amp;quot;false|true&amp;quot; [[declare]]=&amp;quot;sql&amp;quot; [[sqltype]]=&amp;quot;sqltype&amp;quot; [[nativetype]]=&amp;quot;nativetype&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[cache]]&amp;gt;'''''cache_class_name'''''&amp;lt;/cache&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/load&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot; [[scope]]=&amp;quot;after|pre|inline|before_etl&amp;quot; &amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[class]]&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/tasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
             &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/destination&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/destinations&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[aftertasks]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[task]] [[noconnection]]=&amp;quot;false|true&amp;quot; [[commit]]=&amp;quot;false|true&amp;quot;&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[name]]'''''&amp;gt;task name&amp;lt;/name&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[tablename]]&amp;gt;table name&amp;lt;/tablename&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;       &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;'''''[[class]]'''''&amp;gt;task_class_name&amp;lt;/class&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[connection]]&amp;gt;task connection name&amp;lt;/connection&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]]&amp;gt;auto|driver_class_name&amp;lt;/driver&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[driver]] '''''[[name]]'''''=&amp;quot;auto|driver_class_name&amp;quot; [[parent]]=&amp;quot;parent_driver_class_name&amp;quot; [[literalsize]]=&amp;quot;int&amp;quot; [[varcharsize]]=&amp;quot;int&amp;quot; [[charsize]]=&amp;quot;int&amp;quot; [[precision]]=&amp;quot;int&amp;quot; [[scale]]=&amp;quot;int&amp;quot; [[lineslimit]]=&amp;quot;int&amp;quot; [[initsql]]=&amp;quot;sql&amp;quot; [[case]]=&amp;quot;empty|lower|upper&amp;quot;/&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[sql]]|[[code]]|[[cmd]]&amp;gt;code&amp;lt;/sql|code|cmd&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[using]]&amp;gt;using&amp;lt;/using&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[onexception]] '''''[[action]]'''''=&amp;quot;continue|ignore|raise&amp;quot; [[mask]]=&amp;quot;mask&amp;quot; /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variables]]&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;[[variable_name]] [[name]]=&amp;quot;variable name&amp;quot; [[value]]=&amp;quot;value&amp;quot; [[attributes]] /&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/variables&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt;  &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/task&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;/aftertasks&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;/scenario&amp;gt;&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	<entry>
		<id>https://www.toolsverse.com/docs/Installing_and_Configuring_ETL_Framework</id>
		<title>Installing and Configuring ETL Framework</title>
		<link rel="alternate" type="text/html" href="https://www.toolsverse.com/docs/Installing_and_Configuring_ETL_Framework"/>
				<updated>2014-08-05T17:08:15Z</updated>
		
		<summary type="html">&lt;p&gt;Maxlmus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Downloading ==&lt;br /&gt;
&lt;br /&gt;
Look for clearly marked ETL Framework downloads. On Windows and OS X ETL Framework can be downloaded as an installer. Use archive downloads for other operating systems.&lt;br /&gt;
&lt;br /&gt;
== Installing ==&lt;br /&gt;
&lt;br /&gt;
There are two ways to install ETL Framework: using installer or extracting files from the archive. &lt;br /&gt;
&lt;br /&gt;
When using installer just execute it and follow instructions on the screen.&lt;br /&gt;
&lt;br /&gt;
OS X installer is offered in a form of self-extracting DMG file. When prompted drag and drop ETL Framework folder to the Applications.&lt;br /&gt;
&lt;br /&gt;
When installing from archive you will need to manually extract files using utility provided by operating system. All files are contained in the enclosing folder named etl-version.&lt;br /&gt;
&lt;br /&gt;
Installing from archive will not add any entries to the Start menu, add desktop launchers or register the software in the registry.&lt;br /&gt;
&lt;br /&gt;
== Configuring ==&lt;br /&gt;
&lt;br /&gt;
ETL Framework comes pre-configured to provide highest levels of performance and compatibility.&lt;br /&gt;
&lt;br /&gt;
Framework requires a valid not expired license. Licenses are located under  ETL_FRAMEWORK_HOME\license folder (*.lic files) or under ETL_FRAMEWORK_HOME\lib (*.jar files).&lt;br /&gt;
&lt;br /&gt;
'''Note''': ETL Framework comes with a 20-days evaluation license. It will expire after 20 days since the first use. You can a buy a commercial license which will never expire. License can be delivered as a lic or jar file. Using jars for licenses decreases dependency on external folders.  &lt;br /&gt;
&lt;br /&gt;
You can read more about licensing [http://www.toolsverse.com/support/faq/ here]. &lt;br /&gt;
&lt;br /&gt;
=== Changing configuration properties ===&lt;br /&gt;
&lt;br /&gt;
ETL framework uses etl.properties file located under ETL_FRAMEWORK_HOME/config folder to load configuration properties from. You can change default name of the configuration file by setting property config.file.name. Example: &amp;lt;pre&amp;gt;-Dconfig.file.name=c:/etl/config/test.properties.&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
If file does not exist framework will use default values.&lt;br /&gt;
&lt;br /&gt;
You can add any property to the file using format property_name=value. You can also completely ignore configuration file and set properties programmatically using System.setProperty(name, value) or by passing -D props to the Java program.&lt;br /&gt;
&lt;br /&gt;
Some of the properties:&lt;br /&gt;
* network.appupdateurl - the URL used to call auto-update Web service&lt;br /&gt;
* network.appserverurl - the URL used to call ETL Web service&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
network.appserverurl=http://localhost:8080/dataexplorer/ide&lt;br /&gt;
network.appupdateurl=http://www.toolsverse.com/api/services/CheckForUpdates&lt;br /&gt;
# never change properties below&lt;br /&gt;
app.update.key=etl&lt;br /&gt;
app.name=etlprocess&lt;br /&gt;
app.title=ETL Framework&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Changing JVM Parameters ===&lt;br /&gt;
&lt;br /&gt;
# Open ETL_FRAMEWORK_HOME\etlappstart.properties in your favorite text editor&lt;br /&gt;
# Change line containing app.vm.options&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
=== Changing Logging Parameters ===&lt;br /&gt;
&lt;br /&gt;
# Open ETL_FRAMEWORK_HOME\config\log4j.properties in your favorite text editor&lt;br /&gt;
# Make a change&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
=== Adding JDBC drivers ===&lt;br /&gt;
&lt;br /&gt;
Each copy of the ETL Framework comes with the following JDBC drivers:&lt;br /&gt;
&lt;br /&gt;
* DB2&lt;br /&gt;
* Informix&lt;br /&gt;
* Microsoft SQL Server&lt;br /&gt;
* Sybase Advanced Server&lt;br /&gt;
* MySQL&lt;br /&gt;
* Oracle&lt;br /&gt;
* PostgreSQL&lt;br /&gt;
* Java DB (Derby)&lt;br /&gt;
&lt;br /&gt;
They are located in the ETL_FRAMEWORK_HOME\jdbc folder. ETL Framework automatically recognizes (on start-up) and dynamically loads (when needed) jdbc drivers under this folder.&lt;br /&gt;
&lt;br /&gt;
To install new jdbc driver just add a sub folder under ETL_FRAMEWORK_HOME\jdbc and put all required files there. Restart Data Explorer. &lt;br /&gt;
&lt;br /&gt;
Alternatively, since JDBC drivers are just jar files you can simply put them in the ETL_FRAMEWORK_HOME\lib folder and they will be automatically loaded and added to the classpath.&lt;br /&gt;
&lt;br /&gt;
== Redistribution and managing dependencies ==&lt;br /&gt;
&lt;br /&gt;
Configure ETL framework the way you like, exclude all unneeded components. You can find redistribution list and recommendations how to manage dependencies [[Redistribution and managing dependencies|here]].&lt;br /&gt;
&lt;br /&gt;
== Checking for updates ==&lt;br /&gt;
&lt;br /&gt;
ETL Framework can check for new version and update itself if new version exists.&lt;br /&gt;
&lt;br /&gt;
To check for new new version run ETL framework executable with -v parameter. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\projects\toolsverse\java\dist\etl&amp;gt;etl.exe -v&lt;br /&gt;
Toolsverse Etl Framework 4.0-19862. Use -? for help.&lt;br /&gt;
&lt;br /&gt;
Checking for updates...&lt;br /&gt;
Update status: new version available&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To auto update ETL framework run executable with -u parameter. &lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
C:\projects\toolsverse\java\dist\etl&amp;gt;etl.exe -u&lt;br /&gt;
Toolsverse Etl Framework 4.0-19862. Use -? for help.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Manually updating ==&lt;br /&gt;
&lt;br /&gt;
You can update framework to the new version manually:&lt;br /&gt;
&lt;br /&gt;
# Download update&lt;br /&gt;
# Replace exiting files on files from the update&lt;/div&gt;</summary>
		<author><name>Maxlmus</name></author>	</entry>

	</feed>