<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>FTP on DecipherMiddleware</title><link>https://blog.deciphermiddleware.in/tags/ftp/</link><description>Recent content in FTP on DecipherMiddleware</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sat, 27 Nov 2021 21:12:00 +0000</lastBuildDate><atom:link href="https://blog.deciphermiddleware.in/tags/ftp/index.xml" rel="self" type="application/rss+xml"/><item><title>Demystifying file read as attachment in SOA 12c</title><link>https://blog.deciphermiddleware.in/posts/demystifying-file-read-as-attachment-in/</link><pubDate>Sat, 27 Nov 2021 21:12:00 +0000</pubDate><guid>https://blog.deciphermiddleware.in/posts/demystifying-file-read-as-attachment-in/</guid><description>&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/e86152fc43.jpg"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/e86152fc43.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In cases when we just want to move a file(without transformation) from one SFTP/FTP/file location to the other SFTP/FTP/file location, we can read a file with or without schema and then perform the write operation to the target location. If we provide an exact file schema for conversion to XML, it takes a lot of heap memory to transform from a csv or ffd to an XML document. In cases when files are not simple text files or schema is not available, one way to do so is to read the file as an opaque object and write it to a target location. In doing so, we still use a heap memory of the WebLogic server. If we are dealing with very large files, this may impact server performance as the conversion to opaque elements will take place behind the scenes. Using opaque schema is never recommended to process huge files. One better way of handling such a scenario is to read a file as an attachment in SOA 12c. Generally, we have below question:&lt;/p&gt;
&lt;h2 id="what-is-reading-a-file-as-an-attachment-means"&gt;What is reading a file as an attachment means? &lt;a href="#what-is-reading-a-file-as-an-attachment-means" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In this case, we are not loading the contents of the file in the memory of the Weblogic server i.e in BPEL flow we will not see the contents of the file loaded instead, a href to the actual file is seen. In this case, the Weblogic server leverages SOA-INFRA tables to load file data in the table and in return gives href to the flow. This href actually links to data stored in the SOA-INFRA table and can be used to write files to the different locations (in the same or different FTP servers).&lt;/p&gt;
&lt;p&gt;To understand better, let&amp;rsquo;s take an example of flow which polls the FTP directory every 10 minutes and read as an attachment. Then, how we can find the payload from SOA-INFRA tables.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/379a3dd04f.jpg"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/379a3dd04f.jpg" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Below are the steps to configure the file/FTP adapter in BPEL(SOA 12c).&lt;/p&gt;
&lt;h2 id="configuration-steps"&gt;Configuration Steps: &lt;a href="#configuration-steps" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;1. Create a SOA project in Jdevloper 12c.&lt;/p&gt;
&lt;p&gt;2. Drag and drop FTP adapter from component pallet. Enter the &lt;strong&gt;service name&lt;/strong&gt;. Click Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/575729400a.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/575729400a.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. Select &lt;strong&gt;Define from operation and schema (specified later)&lt;/strong&gt;. Click Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/659e3685a0.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/659e3685a0.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4. Specify the source &lt;strong&gt;FTP JNDI&lt;/strong&gt; name as configured in the Weblogic server. Click next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/b95a9cf0c4.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/b95a9cf0c4.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;5. Select operation type as &lt;strong&gt;Get File&lt;/strong&gt;. Check the &lt;strong&gt;Read File As Attachment&lt;/strong&gt;. If we know the character set, encoding, and Content-Type of the file, then specify else leave it blank. Click Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/45c7f14392.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/45c7f14392.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6. Specify the input directory from where we want to pick the file from. Check &lt;strong&gt;Archive processed files&lt;/strong&gt; , and specify a directory for archive files if we want to archive the data after processing. Check &lt;strong&gt;Delete files after successful retrieval&lt;/strong&gt; if we want to delete the file after processing. Click Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/8ad73896ee.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/8ad73896ee.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;7. Provide the file name pattern or regex file name pattern and click Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/fd20684f1c.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/fd20684f1c.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;8. Specify the polling frequency and click Next. Click on Finish to complete the adapter configuration.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/421396f1b2.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/421396f1b2.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;9. Add a BPEL component with no service, i.e. define service later.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/52cd824c48.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/52cd824c48.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;10. Join the wire from the FTP adapter to the BPEL component.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/8bf3d1fb80.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/8bf3d1fb80.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;11. Open the BPEL component, and configure receive activity as shown below.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/73c397a022.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/73c397a022.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;12. Click OK. Save and deploy the code on the Weblogic server.&lt;/p&gt;
&lt;h2 id="analyzing-the-read-file-as-an-attachment"&gt;Analyzing the read file as an attachment &lt;a href="#analyzing-the-read-file-as-an-attachment" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Let&amp;rsquo;s test the service and see the behaviour of file being read as an attachment.&lt;/p&gt;
&lt;p&gt;1. Place the file in the FTP location and wait for it to get it picked.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/dbb3b822c3.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/dbb3b822c3.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2. Once the file is picked, log in to the em console. We will see an instance created.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/e7c151f581.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/e7c151f581.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3. Open the flow, here we will see only the href.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/b3ee06ca0a.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/b3ee06ca0a.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Now after seeing this, we might think about where did our data go. As we see only href. But where is our actual data?&lt;/p&gt;
&lt;p&gt;Our data is safe within soa-infra database.&lt;/p&gt;
&lt;p&gt;4. To query the file data and file attributes, connect to the SOA-INFRA database of the SOA instance.&lt;/p&gt;
&lt;p&gt;5. Run the below query&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sql" data-lang="sql"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;select&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;attachment&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;where&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;dbkey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;href-value&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/937c749fe8.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/937c749fe8.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;File data is stored in blob format within the &lt;strong&gt;attachment&lt;/strong&gt; table.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id="references"&gt;References: &lt;a href="#references" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="https://docs.oracle.com/middleware/1213/adapters/develop-soa-adapters/GUID-088EFFE9-AE8B-4A35-B9DB-0A0DDA1BBBE7.htm#TKADP590"&gt;https://docs.oracle.com/middleware/1213/adapters/develop-soa-adapters/GUID-088EFFE9-AE8B-4A35-B9DB-0A0DDA1BBBE7.htm#TKADP590&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Please share your valuable feedback 😊😊😊&lt;/p&gt;</description></item><item><title>FTP Polling using FTP JCA adapter in OSB 12c</title><link>https://blog.deciphermiddleware.in/posts/ftp-polling-using-ftp-jca-adapter-in/</link><pubDate>Thu, 14 Jan 2021 19:04:00 +0000</pubDate><guid>https://blog.deciphermiddleware.in/posts/ftp-polling-using-ftp-jca-adapter-in/</guid><description>&lt;p&gt;We can poll files at regular intervals from a remote &lt;strong&gt;ftp/sftp&lt;/strong&gt; server location using &lt;strong&gt;Oracle JCA adapter for FTP&lt;/strong&gt; , with help of &lt;strong&gt;GET&lt;/strong&gt; operation. We can integrate oracle JCA FTP adapter with BPEL, mediator, or OSB 12c. In this article, we will be creating one &lt;strong&gt;OSB&lt;/strong&gt; project that will demonstrate polling of files from remote FTP location using FTP adapter and writing the files to our local server location.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; Using JDeveloper 12c (12.2.1.4).&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="pre-requisites"&gt;Pre-requisites: &lt;a href="#pre-requisites" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;Connection factory configured in Weblogic server.&lt;/li&gt;
&lt;li&gt;User, configured in connection factory has the access to read and write files to target/from ftp location&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="steps"&gt;Steps: &lt;a href="#steps" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Let&amp;rsquo;s start by creating a new project with the name &amp;ldquo;FTP_Polling&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/3d4601354d.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/3d4601354d.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1.&lt;/strong&gt; Open &amp;ldquo;servicebus.sboverview&amp;rdquo; and drag FTP adapter from components palette to proxy services side.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/27e6ab8419.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/27e6ab8419.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/3574968f6f.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/3574968f6f.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; Enter the adapter name and click on next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/35074c6a11.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/35074c6a11.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3.&lt;/strong&gt; In the next step, select Define from operation and schema (specified later).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/b8a9b78832.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/b8a9b78832.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4.&lt;/strong&gt; Specify the &lt;strong&gt;JNDI&lt;/strong&gt; of the &lt;strong&gt;connection factory&lt;/strong&gt;(e.g. eis/Ftp/testFtpAdapter) for the remote SFTP server, from which we want to poll the files. Click on Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/f3e7c60169.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/f3e7c60169.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5.&lt;/strong&gt; Specify the file type - &lt;strong&gt;Binary or ASCII&lt;/strong&gt;. Select Operation type as &lt;strong&gt;Get File&lt;/strong&gt;. Click Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/6865b3698e.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/6865b3698e.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6.&lt;/strong&gt; Specify the input directory, from where we want to poll files. For e.g. &amp;ldquo;/inbound/input&amp;rdquo;. Uncheck, if you don&amp;rsquo;t want to process files recursively. If you want to delete the file from a remote location, then check &amp;ldquo;Delete files after successful retrieval&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/63fd4f49cd.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/63fd4f49cd.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;If you want to archive after reading, then check archive processed files. Provide the directory that is located at your server, not on the remote FTP location. If you want to archive at the same remote location, then add the below property in .jca file of the adapter.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&amp;lt; property name=&amp;ldquo;UseRemoteArchive&amp;rdquo; value=&amp;ldquo;true&amp;rdquo;/&amp;gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;7.&lt;/strong&gt; Specify the file pattern and click on Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/96f194548d.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/96f194548d.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;8.&lt;/strong&gt; Specify the polling frequency(Here we have kept 1 minute or 60 seconds. The adapter will check every 60 seconds if there is any file available) and click on Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/508e71eb62.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/508e71eb62.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;9.&lt;/strong&gt; Specify the schema, if you don&amp;rsquo;t have any schema and want to read data as opaque then select &amp;ldquo;Native format translation not required&amp;rdquo;. In this example, we will be using an opaque schema and will not convert the data to XML by providing any schema. Click on Next. Then click on Finish.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/291f2301b8.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/291f2301b8.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10.&lt;/strong&gt; Adapter files along with proxy service will be created and the adapter will appear on the proxy services side.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/04fcb988ec.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/04fcb988ec.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/dd5502fee6.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/dd5502fee6.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;11.&lt;/strong&gt; Drag and Drop pipeline on Pipeline/Split joins area. A popup window will appear. Specify the service name and click on Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/ea500f66dc.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/ea500f66dc.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12.&lt;/strong&gt; Uncheck the &amp;ldquo;Expose as proxy service&amp;rdquo;. Select the concrete wsdl(i.e. containing ports and bindings), which got created while creating the FTP adapter.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/efdc3ec50a.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/efdc3ec50a.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;13.&lt;/strong&gt; Click on Finish. A pipeline will be created. Now link the adapter and connect the arrow from proxy to pipeline as shown below.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/90cb6bb24d.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/90cb6bb24d.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If proxy service is showing error. Just save all files in the project.&lt;/p&gt;
&lt;h4 id="lets-create-a-file-adapter-to-write-the-polled-file-to-some-local-directory"&gt;Let&amp;rsquo;s create a file adapter to write the polled file to some local directory. &lt;a href="#lets-create-a-file-adapter-to-write-the-polled-file-to-some-local-directory" class="anchor"&gt;🔗&lt;/a&gt;&lt;/h4&gt;&lt;p&gt;&lt;strong&gt;14.&lt;/strong&gt; Drag file adapter from components palette. Enter the adapter name and click Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/6a431116bf.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/6a431116bf.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;15.&lt;/strong&gt; Select Define from operation and schema (specified later). Click on Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/a4ffce542a.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/a4ffce542a.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;16.&lt;/strong&gt; Provide the name of &lt;strong&gt;JNDI&lt;/strong&gt; and click on Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/493b890d28.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/493b890d28.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;17.&lt;/strong&gt; Select the &lt;strong&gt;Write File&lt;/strong&gt; as operation type. Click on Next&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/5293941a20.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/5293941a20.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;18.&lt;/strong&gt; Provide the physical or logical directory and file naming convention(e.g. test_%yyMMddHHmmssSS%). Click on Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/7266d77f32.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/7266d77f32.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;19.&lt;/strong&gt; Specify the schema, if you don&amp;rsquo;t have any schema and want to read data as opaque then select &amp;ldquo;Native format translation not required&amp;rdquo;. In this example, we will be using an opaque schema and will not convert the data to XML by providing any schema. Click on Next. Then click on Finish.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/817f82aba9.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/817f82aba9.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;20.&lt;/strong&gt; Business service and adapter files will be created. Join the wire from the pipeline to the newly created file adapter.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/80f20aaa8b.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/80f20aaa8b.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/871e9bbc11.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/871e9bbc11.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;21.&lt;/strong&gt; Double click on the pipeline. The pipeline window will open. You will see, the route node is already created and configured with the file write business service. Click on routing to check for properties.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/8acd40758b.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/8acd40758b.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;22.&lt;/strong&gt; Under properties select operation as write.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://blog.deciphermiddleware.in/images/blogger/adf539901f.png"&gt;&lt;img src="https://blog.deciphermiddleware.in/images/blogger/adf539901f.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;23.&lt;/strong&gt; Since we are using opaque schema to read and write, we need not do any transformation. Opaque/ base64 data coming as input to service will go to file write business service as output. In this case, the namespace of the body variable will also remain the same.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;24.&lt;/strong&gt; Save and deploy the project to the service bus console. Check for the whole operation to execute.&lt;/p&gt;
&lt;p&gt;Files will be picked from the source location and will be written to the target location. Sample file name: &lt;strong&gt;test_21011512001300&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Since this is an OSB composite, you need to enable trace to see the complete flow from the em console.&lt;/p&gt;
&lt;/blockquote&gt;</description></item></channel></rss>