<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Naveen</title>
    <description>The latest articles on DEV Community by Naveen (@naveen6735).</description>
    <link>https://dev.to/naveen6735</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3908654%2F52352e5f-3974-424f-add0-f9abd28ad5eb.jpeg</url>
      <title>DEV Community: Naveen</title>
      <link>https://dev.to/naveen6735</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/naveen6735"/>
    <language>en</language>
    <item>
      <title>Integrating OIC with Databricks using AWS S3 (External Tables Approach)</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Mon, 18 May 2026 14:05:23 +0000</pubDate>
      <link>https://dev.to/naveen6735/integrating-oic-with-databricks-using-aws-s3-external-tables-approach-4fac</link>
      <guid>https://dev.to/naveen6735/integrating-oic-with-databricks-using-aws-s3-external-tables-approach-4fac</guid>
      <description>&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In modern data integration scenarios, seamless connectivity between cloud platforms is critical. One common requirement is integrating Oracle Integration Cloud (OIC) with Databricks for performing table-based operations.&lt;/p&gt;

&lt;p&gt;However, a key limitation arises:&lt;/p&gt;

&lt;p&gt;❗ Databricks does not provide native RDS-style connectivity for direct table operations from OIC.&lt;/p&gt;

&lt;p&gt;To overcome this limitation, we implement a scalable and efficient architecture:&lt;br&gt;
Proposed Solution Architecture&lt;br&gt;
&lt;strong&gt;OIC → AWS S3 → Databricks (External Tables)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This approach leverages AWS S3 as an intermediate storage layer, allowing OIC to push data, which Databricks can then consume via external tables.&lt;br&gt;
&lt;strong&gt;Architecture Flow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. OIC (Oracle Integration Cloud)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Acts as the data integration layer&lt;/li&gt;
&lt;li&gt;Extracts and prepares data from upstream systems&lt;/li&gt;
&lt;li&gt;Pushes data files (CSV/JSON/Parquet) to AWS S3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. AWS S3 (Storage Layer)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Serves as a staging area for data&lt;/li&gt;
&lt;li&gt;Stores files uploaded by OIC&lt;/li&gt;
&lt;li&gt;Organizes data into structured folders (e.g., by date/source)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Databricks (Processing Layer)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uses External Tables to read data directly from S3&lt;/li&gt;
&lt;li&gt;Processes data using Spark SQL / PySpark&lt;/li&gt;
&lt;li&gt;Performs transformations and analytics&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why External Tables?&lt;/strong&gt;&lt;br&gt;
Since Databricks cannot directly expose tables like traditional RDS systems:&lt;/p&gt;

&lt;p&gt;✅ External tables allow querying data stored in S3&lt;br&gt;
✅ No need to move data into Databricks-managed storage&lt;br&gt;
✅ Enables scalable and cost-effective data access&lt;br&gt;
Example:&lt;br&gt;
&lt;code&gt;CREATE TABLE customer_data&lt;br&gt;
USING CSV&lt;br&gt;
LOCATION 's3://your-bucket/path/'&lt;br&gt;
OPTIONS (header = "true");&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Required Connection Details for OIC&lt;/strong&gt;&lt;br&gt;
To enable the integration (OIC → S3), the following details are required:&lt;br&gt;
📦 &lt;strong&gt;AWS S3 Access Details&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Bucket Name&lt;/li&gt;
&lt;li&gt;Region&lt;/li&gt;
&lt;li&gt;Folder Path (if applicable)&lt;/li&gt;
&lt;li&gt;Access Key ID&lt;/li&gt;
&lt;li&gt;Secret Access Key&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔗 Connectivity Configuration in OIC&lt;/p&gt;

&lt;p&gt;Configure REST Adapter or FTP Adapter / Stage File Action&lt;br&gt;
Use pre-signed URLs or API-based upload (if secured)&lt;br&gt;
Ensure proper authentication mechanism (AWS Signature v4)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwrtzmj2i2n3dbyzpvfw8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwrtzmj2i2n3dbyzpvfw8.png" alt=" " width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⚙️ OIC Design Reference&lt;br&gt;
Step 1: Data Extraction&lt;/p&gt;

&lt;p&gt;Fetch data from source application (DB / SaaS)&lt;/p&gt;

&lt;p&gt;Step 2: Data Transformation&lt;/p&gt;

&lt;p&gt;Convert to required format (CSV/JSON)&lt;/p&gt;

&lt;p&gt;Step 3: File Creation&lt;/p&gt;

&lt;p&gt;Use Stage File action in OIC&lt;/p&gt;

&lt;p&gt;Step 4: Upload to S3&lt;/p&gt;

&lt;p&gt;Use REST API or direct adapter&lt;br&gt;
Push file into S3 bucket&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F45h4rr5rovunzk9qpff2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F45h4rr5rovunzk9qpff2.png" alt=" " width="306" height="730"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ Advantages of This Approach&lt;/p&gt;

&lt;p&gt;🔹 Decouples OIC and Databricks&lt;br&gt;
🔹 Highly scalable using S3 storage&lt;br&gt;
🔹 Cost-efficient (pay-as-you-go)&lt;br&gt;
🔹 Supports batch and near real-time processing&lt;br&gt;
🔹 Simplifies integration architecture&lt;/p&gt;

&lt;p&gt;⚠️ Key Considerations&lt;/p&gt;

&lt;p&gt;Ensure data format compatibility (CSV, Parquet preferred)&lt;br&gt;
Maintain naming conventions in S3&lt;br&gt;
Handle data partitioning for performance&lt;br&gt;
Secure credentials using OCI Vault / AWS IAM policies&lt;br&gt;
Monitor file upload success and retries in OIC&lt;/p&gt;

&lt;p&gt;🎯 Conclusion&lt;br&gt;
Due to the absence of native RDS-style table connectivity in Databricks, using an intermediary layer like AWS S3 is the most effective integration pattern.&lt;br&gt;
The combination of:&lt;/p&gt;

&lt;p&gt;OIC for orchestration&lt;br&gt;
S3 for storage&lt;br&gt;
Databricks external tables for processing&lt;/p&gt;

&lt;p&gt;provides a robust, scalable, and cloud-native solution.&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>aws</category>
      <category>cloud</category>
      <category>dataengineering</category>
    </item>
    <item>
      <title>How to Accept Binary Format Files Directly in Oracle Integration Cloud (OIC) and Return JSON Response from SFTP</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Thu, 14 May 2026 05:12:36 +0000</pubDate>
      <link>https://dev.to/naveen6735/how-to-accept-binary-format-files-directly-in-oracle-integration-cloud-oic-and-return-json-7jn</link>
      <guid>https://dev.to/naveen6735/how-to-accept-binary-format-files-directly-in-oracle-integration-cloud-oic-and-return-json-7jn</guid>
      <description>&lt;p&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Oracle Integration Cloud (OIC), there are scenarios where we need to receive files directly from an external application through a REST API and then place those files into an SFTP location.&lt;/p&gt;

&lt;p&gt;Usually, files like CSV, ZIP, PDF, or other binary content are handled as file-based data. In this blog, we will see how to configure an OIC integration to accept a binary file as input through a REST trigger, write that file to SFTP in binary mode, and finally return a successful JSON response with file details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Case&lt;/strong&gt;&lt;br&gt;
The requirement is to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Expose a REST endpoint in OIC.&lt;/li&gt;
&lt;li&gt;Accept a file directly as a binary payload.&lt;/li&gt;
&lt;li&gt;Write the received binary file to an SFTP directory.&lt;/li&gt;
&lt;li&gt;Return a JSON response containing file details such as:&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;File name&lt;/li&gt;
&lt;li&gt;Directory&lt;/li&gt;
&lt;li&gt;Status&lt;/li&gt;
&lt;li&gt;Uploaded date&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This approach is useful when the source system sends the file directly in the REST request body instead of sending file content as Base64 or multipart form data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;High-Level Flow&lt;/strong&gt;&lt;br&gt;
The integration flow is as follows:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9tft2kv316haow37ve1i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9tft2kv316haow37ve1i.png" alt=" " width="511" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;br&gt;
Before creating the integration, make sure the following are available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Oracle Integration Cloud instance access&lt;/li&gt;
&lt;li&gt;REST connection with Trigger role&lt;/li&gt;
&lt;li&gt;SFTP connection configured successfully&lt;/li&gt;
&lt;li&gt;Target SFTP directory details&lt;/li&gt;
&lt;li&gt;Required file naming convention&lt;/li&gt;
&lt;li&gt;Sample JSON response structure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create REST Connection with Trigger Role&lt;/strong&gt;&lt;br&gt;
First, create a REST connection in OIC.&lt;br&gt;
While creating the REST connection, select the role as: &lt;strong&gt;Trigger&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7c9o9jjywap8690my6w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7c9o9jjywap8690my6w.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This REST connection will be used to expose the integration as an API endpoint.&lt;br&gt;
Once the REST connection is created and tested successfully, it can be used as the starting point of the integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create and Test SFTP Connection&lt;/strong&gt;&lt;br&gt;
Next, create an SFTP connection in OIC.&lt;br&gt;
Provide the required SFTP details such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SFTP host&lt;/li&gt;
&lt;li&gt;Port&lt;/li&gt;
&lt;li&gt;Username&lt;/li&gt;
&lt;li&gt;Password or private key&lt;/li&gt;
&lt;li&gt;Known host key details, if applicable&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F427uuo8lpdu87nglj1mk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F427uuo8lpdu87nglj1mk.png" alt=" " width="800" height="523"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After entering the required details, test the connection.&lt;br&gt;
The connection should be established successfully before using it in the integration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Create App-Driven Orchestration Integration&lt;/strong&gt;&lt;br&gt;
Create a new integration in OIC using:App Driven Orchestration&lt;br&gt;
Add the REST connection as the trigger.&lt;br&gt;
&lt;strong&gt;Step 4: Configure REST Trigger Operation&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configure the REST trigger with a POST operation.&lt;/li&gt;
&lt;li&gt;In the request configuration, select the request payload format as:&lt;strong&gt;Binary&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;In the REST trigger configuration, mention the content type as:&lt;strong&gt;Other Media Type&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Then provide the media type as:&lt;strong&gt;application/csv&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;If you are handling other file types, you can change the media type accordingly.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;application/pdf&lt;/li&gt;
&lt;li&gt;application/zip&lt;/li&gt;
&lt;li&gt;application/octet-stream&lt;/li&gt;
&lt;li&gt;text/csv&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ujprdxfh0ldpdp8th2q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ujprdxfh0ldpdp8th2q.png" alt=" " width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Configure REST Response as JSON&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the response part of the REST trigger, select the response payload format as:JSON Sample&lt;br&gt;
Use the below sample JSON response:&lt;br&gt;
{&lt;br&gt;
  "File Properties": {&lt;br&gt;
    "FileName": "sfghsfh",&lt;br&gt;
    "Directory": "djsdgj",&lt;br&gt;
    "status": "gjsgjds",&lt;br&gt;
    "UploadedDate": "25-dec-2026"&lt;br&gt;
  }&lt;br&gt;
}&lt;br&gt;
This sample will generate the response structure in the mapper.&lt;br&gt;
You can later map actual values from the SFTP write response or assign custom values.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Add SFTP Adapter in the Integration Flow&lt;/strong&gt;&lt;br&gt;
After successfully creating the REST trigger, add the SFTP adapter in the integration flow.&lt;br&gt;
Select the SFTP connection and configure the operation as:&lt;strong&gt;Write&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2u6vpn4n53ie0wlgibv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu2u6vpn4n53ie0wlgibv.png" alt=" " width="648" height="656"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 7: Configure Target Directory and File Name&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provide the target SFTP directory where the file should be written.&lt;/li&gt;
&lt;li&gt;You can provide the file name directly in the SFTP configuration or dynamically map it later in the mapper.
&lt;strong&gt;Map REST Binary Payload to SFTP Write&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now open the mapper between the REST trigger and SFTP write activity.&lt;br&gt;
Map the incoming binary payload from the REST trigger request to the SFTP file reference/content field.&lt;br&gt;
The binary stream received from the REST POST request should be passed directly to the SFTP write operation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvu0hgkaos675i6d1v62m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvu0hgkaos675i6d1v62m.png" alt=" " width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Map SFTP Response to REST Response&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After the SFTP write operation is completed, map the response from the SFTP activity to the REST response mapper.&lt;br&gt;
Map the output fields as required.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fct3o3uvl758yjgr3vkke.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fct3o3uvl758yjgr3vkke.png" alt=" " width="800" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Using this approach, we can directly accept binary files in Oracle Integration Cloud through a REST trigger and write them to an SFTP location without converting the file content into Base64 or any other format.&lt;br&gt;
This is a simple and effective solution when an external application sends files directly through a REST API. By configuring the REST request payload as Binary and the SFTP transfer mode as Binary, OIC can handle the file smoothly and return a proper JSON response after successful upload.&lt;br&gt;
This helps in building clean file-upload integrations where the source system gets an immediate confirmation response with file details after the file is written to SFTP.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxc0l2wfc2c90dl03eg7g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxc0l2wfc2c90dl03eg7g.png" alt=" " width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>automation</category>
      <category>cloud</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Configuring a Custom “From” Email Address in Oracle Integration Cloud (OIC)</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Mon, 11 May 2026 07:40:26 +0000</pubDate>
      <link>https://dev.to/naveen6735/configuring-a-custom-from-email-address-in-oracle-integration-cloud-oic-2cn6</link>
      <guid>https://dev.to/naveen6735/configuring-a-custom-from-email-address-in-oracle-integration-cloud-oic-2cn6</guid>
      <description>&lt;p&gt;By default, Oracle Integration Cloud (OIC) sends notification emails using an Oracle‑managed email address such as:&lt;br&gt;
&lt;strong&gt;&lt;a href="mailto:no-reply@mail.integration.eu-frankfurt-1.ocp.oraclecloud.com"&gt;no-reply@mail.integration.eu-frankfurt-1.ocp.oraclecloud.com&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While this works, it is not ideal for enterprise usage due to branding, trust, and spam‑filtering concerns. Most organizations prefer emails to be sent from their own domain email address (for example, &lt;a href="mailto:noreply@yourcompany.com"&gt;noreply@yourcompany.com&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;This blog explains how to configure a custom “From” email address in OIC so that emails are delivered successfully and behave like authenticated, non‑spam emails.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1:&lt;/strong&gt; Add a Custom Sender Email Address in OIC&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Log in to Oracle Integration Cloud.&lt;/li&gt;
&lt;li&gt;Navigate to:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Settings → Notifications&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to the Senders tab.&lt;/li&gt;
&lt;li&gt;Click Add Email Address.&lt;/li&gt;
&lt;li&gt;Enter your required email address, for example: &lt;a href="mailto:noreply@yourcompany.com"&gt;noreply@yourcompany.com&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Verify the Email Address&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After adding the email address, Oracle sends a verification code to that mailbox.&lt;/li&gt;
&lt;li&gt;Access the mailbox and retrieve the verification code.&lt;/li&gt;
&lt;li&gt;Enter the code in OIC to complete verification.
Once verified, the email address will appear as an approved sender in OIC.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fov6p1z2zy8h39zd38hxe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fov6p1z2zy8h39zd38hxe.png" alt=" " width="800" height="387"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Raise an Oracle Support Ticket (Mandatory)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even after verification, additional DNS configuration is required to prevent emails from being marked as spam.&lt;br&gt;
&lt;strong&gt;What to do:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Raise an Oracle Support (SR) ticket with the request:
“Please provide the CNAME record details required to configure a custom sender email address in OIC.”
Oracle Support will provide:
✅ CNAME Key
✅ CNAME Value&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Update DNS Records (With DNS Admin)&lt;/strong&gt;&lt;br&gt;
Share the CNAME details received from Oracle Support with your DNS administrator and request them to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add the CNAME key and value to your domain’s DNS records
This step is critical to:&lt;/li&gt;
&lt;li&gt;Validate Oracle as an authorized sender&lt;/li&gt;
&lt;li&gt;Improve email trust&lt;/li&gt;
&lt;li&gt;Avoid spam filtering or message rejection&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 5: (Optional but Recommended) Configure SPF Records&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In addition to the CNAME record, it is strongly recommended to configure SPF (Sender Policy Framework).&lt;/p&gt;

&lt;p&gt;SPF configuration helps:&lt;br&gt;
✅ Improve email deliverability&lt;br&gt;
✅ Prevent spoofing&lt;br&gt;
✅ Reduce spam classification&lt;/p&gt;

&lt;p&gt;Ask your DNS administrator to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Update the SPF record in DNS Lookups
&lt;strong&gt;Step 6: Use the Custom “From” Address in Integrations&lt;/strong&gt;
Once all configurations are complete:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Always use the verified custom email address as the FROM address in your OIC integration notifications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lr8oo2vw08icy7iz6ef.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3lr8oo2vw08icy7iz6ef.png" alt=" " width="720" height="722"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This applies to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OIC Integration Insight notifications&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>architecture</category>
      <category>oracle</category>
    </item>
    <item>
      <title>Oracle Integration Cloud (Gen3): File Polling Using FTP Trigger</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Sat, 02 May 2026 08:46:54 +0000</pubDate>
      <link>https://dev.to/naveen6735/oracle-integration-cloud-gen3-file-polling-using-ftp-trigger-3f7m</link>
      <guid>https://dev.to/naveen6735/oracle-integration-cloud-gen3-file-polling-using-ftp-trigger-3f7m</guid>
      <description>&lt;p&gt;&lt;strong&gt;Automate file‑based integrations without custom schedulers (OIC Gen3 24.10+)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;File‑based integrations are still extremely common—daily CSV extracts, XML drops from legacy systems, or batch partner feeds over FTP/SFTP.&lt;/p&gt;

&lt;p&gt;Before &lt;strong&gt;Oracle Integration Cloud (OIC) Gen3 24.10,&lt;/strong&gt; &lt;br&gt;
triggering an integration when a file arrived often required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Scheduled integrations&lt;/li&gt;
&lt;li&gt;External scripts&lt;/li&gt;
&lt;li&gt;Custom polling logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Gen3 introduced a native File‑Polling trigger&lt;/strong&gt; and it simplifies everything.&lt;/p&gt;

&lt;p&gt;In this post, I’ll walk through how to use the new FTP File Polling trigger, when to use it, and what to watch out for.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When Should You Use File Polling?&lt;/strong&gt;&lt;br&gt;
Use this feature if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files are small to medium in size&lt;/li&gt;
&lt;li&gt;You want to trigger immediately on file arrival&lt;/li&gt;
&lt;li&gt;You don’t need manual file download logic&lt;/li&gt;
&lt;li&gt;You prefer a low‑code, native OIC pattern&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Typical use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Daily CSV or XML reports&lt;/li&gt;
&lt;li&gt;Lightweight batch integrations&lt;/li&gt;
&lt;li&gt;Partner file drops&lt;/li&gt;
&lt;li&gt;Staging‑based data ingestion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What’s New in OIC Gen3 24.10+&lt;/strong&gt;&lt;br&gt;
With the FTP File‑Polling trigger, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automatically trigger an integration when a file arrives&lt;/li&gt;
&lt;li&gt; Match files using filename patterns&lt;/li&gt;
&lt;li&gt; Load file content directly as payload&lt;/li&gt;
&lt;li&gt;Control archive, delete, or reject behavior&lt;/li&gt;
&lt;li&gt;Avoid additional adapters or scripts&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step‑by‑Step: Configuring File Polling in OIC&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Verify OIC Version&lt;/strong&gt;&lt;br&gt;
Ensure your instance is:&lt;/p&gt;

&lt;p&gt;Oracle Integration Cloud Gen3 – 24.10 or later&lt;/p&gt;

&lt;p&gt;File polling is not available in earlier Gen3 builds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Configure FTP / SFTP Connection&lt;/strong&gt;&lt;br&gt;
Create or reuse an FTP adapter connection with Trigger &amp;amp; Invoke role:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Host, port, credentials&lt;/li&gt;
&lt;li&gt;Source directory permissions&lt;/li&gt;
&lt;li&gt;Optional archive/reject directories&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Test the connection before proceeding.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.Use the File‑Polling Trigger&lt;/strong&gt; &lt;br&gt;
While creating the integration:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select the FTP Adapter as the trigger&lt;/li&gt;
&lt;li&gt;Choose File Polling as the trigger type&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You’ll configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Polling frequency (e.g., every 5 minutes)&lt;/li&gt;
&lt;li&gt;Source directory&lt;/li&gt;
&lt;li&gt;Filename pattern (e.g., *.csv)&lt;/li&gt;
&lt;li&gt;Schema type (CSV / XML)&lt;/li&gt;
&lt;li&gt;Optional sample file upload for schema generation
This eliminates the need for a separate file‑server read step.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;4. Configure File Handling Behavior&lt;/strong&gt;&lt;br&gt;
You can define what happens after the file is read:&lt;/p&gt;

&lt;p&gt;📦 Archive the file&lt;br&gt;
🗑️ Delete after successful read&lt;br&gt;
🚫 Reject invalid files&lt;br&gt;
⚠️ Ignore delete errors to prevent retries&lt;/p&gt;

&lt;p&gt;This is extremely useful for idempotency and cleanup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Design the Integration Flow&lt;/strong&gt;&lt;br&gt;
After the trigger:&lt;/p&gt;

&lt;p&gt;Parse file content using the generated schema&lt;br&gt;
Route data to downstream systems&lt;br&gt;
Apply validations and transformations&lt;br&gt;
Handle errors using reject logic&lt;/p&gt;

&lt;p&gt;The file content is already available as the payload—no manual streaming required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Test with a Proof of Concept (POC)&lt;/strong&gt;&lt;br&gt;
Before production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drop a test file matching the pattern&lt;/li&gt;
&lt;li&gt;Confirm the integration triggers immediately&lt;/li&gt;
&lt;li&gt;Validate:
    *File movement (archive/delete)
    *Payload parsing
    *Error handling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;7. Deploy &amp;amp; Monitor&lt;/strong&gt;&lt;br&gt;
Once verified:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Activate the integration&lt;/li&gt;
&lt;li&gt;Monitor tracking for file runs&lt;/li&gt;
&lt;li&gt;Adjust polling frequency or file rules if required&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ur24q0v6s6sdq33vl79.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ur24q0v6s6sdq33vl79.png" alt=" " width="800" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>oic</category>
      <category>oracle</category>
      <category>tutorial</category>
      <category>ace</category>
    </item>
  </channel>
</rss>
