<?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>STRUGGLING WITH IRREGULAR CSV FILES IN OIC? HERE’S THE NXSD SOLUTION</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Wed, 10 Jun 2026 17:14:01 +0000</pubDate>
      <link>https://dev.to/naveen6735/struggling-with-irregular-csv-files-in-oic-heres-the-nxsd-solution-3cd1</link>
      <guid>https://dev.to/naveen6735/struggling-with-irregular-csv-files-in-oic-heres-the-nxsd-solution-3cd1</guid>
      <description>&lt;p&gt;Handling &lt;strong&gt;non-uniform CSV/TXT files&lt;/strong&gt; in Oracle Integration Cloud (OIC) is a common real-time integration challenge. These files often contain inconsistent structures like headers, mixed record types, or variable columns. This blog explains how to process such files using &lt;strong&gt;NXSD (Native Format Schema Definition)&lt;/strong&gt; and trigger notifications effectively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;UNDERSTANDING THE CHALLENGE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Below is csv/txt file, which is Variable number of columns&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight csvs"&gt;&lt;code&gt;&lt;span class="k"&gt;Code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Date&lt;/span&gt;
&lt;span class="k"&gt;F&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Hello&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;nj&lt;/span&gt;&lt;span class="kp"&gt;@gmail&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="k"&gt;com&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;957351&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;01&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;06&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2026&lt;/span&gt;
&lt;span class="k"&gt;S&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Hey&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;ab&lt;/span&gt;&lt;span class="kp"&gt;@gmail&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="k"&gt;com&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;45466&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;02&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;06&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2026&lt;/span&gt;
&lt;span class="k"&gt;P&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;Bye&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;ck&lt;/span&gt;&lt;span class="kp"&gt;@gmail&lt;/span&gt;&lt;span class="err"&gt;.&lt;/span&gt;&lt;span class="k"&gt;com&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;87979&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mf"&gt;03&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;06&lt;/span&gt;&lt;span class="err"&gt;-&lt;/span&gt;&lt;span class="mf"&gt;2026&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This kind of files we need to process in OIC with most effectively.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 1: CREATE FLEXIBLE NXSD SCHEMA&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;NXSD enables parsing flat files into structured XML.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Observe &amp;amp; understand the below script with respective the challenge mentioned.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8" ?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;xsd:schema&lt;/span&gt; &lt;span class="na"&gt;xmlns:xsd=&lt;/span&gt;&lt;span class="s"&gt;"http://www.w3.org/2001/XMLSchema"&lt;/span&gt;
            &lt;span class="na"&gt;xmlns:nxsd=&lt;/span&gt;&lt;span class="s"&gt;"http://xmlns.oracle.com/pcbpel/nxsd"&lt;/span&gt;
            &lt;span class="na"&gt;xmlns:tns=&lt;/span&gt;&lt;span class="s"&gt;"http://TargetNamespace.com/fileReference/read"&lt;/span&gt;
            &lt;span class="na"&gt;targetNamespace=&lt;/span&gt;&lt;span class="s"&gt;"http://TargetNamespace.com/fileReference/read"&lt;/span&gt;
            &lt;span class="na"&gt;elementFormDefault=&lt;/span&gt;&lt;span class="s"&gt;"qualified"&lt;/span&gt;
            &lt;span class="na"&gt;attributeFormDefault=&lt;/span&gt;&lt;span class="s"&gt;"unqualified"&lt;/span&gt;
            &lt;span class="na"&gt;nxsd:version=&lt;/span&gt;&lt;span class="s"&gt;"NXSD"&lt;/span&gt;
            &lt;span class="na"&gt;nxsd:stream=&lt;/span&gt;&lt;span class="s"&gt;"chars"&lt;/span&gt;
            &lt;span class="na"&gt;nxsd:encoding=&lt;/span&gt;&lt;span class="s"&gt;"UTF8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

    &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Root-Element"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;xsd:complexType&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;xsd:sequence&amp;gt;&lt;/span&gt;

                &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"headerset"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;xsd:complexType&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;xsd:sequence&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;ref=&lt;/span&gt;&lt;span class="s"&gt;"tns:header"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;/xsd:sequence&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;/xsd:complexType&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;/xsd:element&amp;gt;&lt;/span&gt;

                &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"lineset"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;xsd:complexType&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;xsd:sequence&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;ref=&lt;/span&gt;&lt;span class="s"&gt;"tns:line"&lt;/span&gt; &lt;span class="na"&gt;minOccurs=&lt;/span&gt;&lt;span class="s"&gt;"1"&lt;/span&gt; &lt;span class="na"&gt;maxOccurs=&lt;/span&gt;&lt;span class="s"&gt;"unbounded"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;/xsd:sequence&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;/xsd:complexType&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;/xsd:element&amp;gt;&lt;/span&gt;

            &lt;span class="nt"&gt;&amp;lt;/xsd:sequence&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/xsd:complexType&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/xsd:element&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"header"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"tns:headerType"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"line"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"tns:lineType"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;xsd:complexType&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"headerType"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;xsd:sequence&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"C1"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"xsd:string"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:style=&lt;/span&gt;&lt;span class="s"&gt;"terminated"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:terminatedBy=&lt;/span&gt;&lt;span class="s"&gt;","&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:quotedBy=&lt;/span&gt;&lt;span class="s"&gt;"&amp;amp;quot;"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"C2"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"xsd:string"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:style=&lt;/span&gt;&lt;span class="s"&gt;"terminated"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:terminatedBy=&lt;/span&gt;&lt;span class="s"&gt;","&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:quotedBy=&lt;/span&gt;&lt;span class="s"&gt;"&amp;amp;quot;"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"C3"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"xsd:string"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:style=&lt;/span&gt;&lt;span class="s"&gt;"terminated"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:terminatedBy=&lt;/span&gt;&lt;span class="s"&gt;"${eol}"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:quotedBy=&lt;/span&gt;&lt;span class="s"&gt;"&amp;amp;quot;"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/xsd:sequence&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/xsd:complexType&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;xsd:complexType&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"lineType"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
     &lt;span class="nt"&gt;&amp;lt;xsd:sequence&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"C1"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"xsd:string"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:style=&lt;/span&gt;&lt;span class="s"&gt;"terminated"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:terminatedBy=&lt;/span&gt;&lt;span class="s"&gt;","&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:quotedBy=&lt;/span&gt;&lt;span class="s"&gt;"&amp;amp;quot;"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"C2"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"xsd:string"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:style=&lt;/span&gt;&lt;span class="s"&gt;"terminated"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:terminatedBy=&lt;/span&gt;&lt;span class="s"&gt;","&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:quotedBy=&lt;/span&gt;&lt;span class="s"&gt;"&amp;amp;quot;"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"C3"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"xsd:string"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:style=&lt;/span&gt;&lt;span class="s"&gt;"terminated"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:terminatedBy=&lt;/span&gt;&lt;span class="s"&gt;","&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:quotedBy=&lt;/span&gt;&lt;span class="s"&gt;"&amp;amp;quot;"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"C4"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"xsd:string"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:style=&lt;/span&gt;&lt;span class="s"&gt;"terminated"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:terminatedBy=&lt;/span&gt;&lt;span class="s"&gt;","&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:quotedBy=&lt;/span&gt;&lt;span class="s"&gt;"&amp;amp;quot;"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;xsd:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"C5"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"xsd:string"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:style=&lt;/span&gt;&lt;span class="s"&gt;"terminated"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:terminatedBy=&lt;/span&gt;&lt;span class="s"&gt;"${eol}"&lt;/span&gt;
                         &lt;span class="na"&gt;nxsd:quotedBy=&lt;/span&gt;&lt;span class="s"&gt;"&amp;amp;quot;"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;               
        &lt;span class="nt"&gt;&amp;lt;/xsd:sequence&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/xsd:complexType&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/xsd:schema&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save the above script as &lt;strong&gt;XX_FILENAME.xsd&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 2: BUILD OIC INTEGRATION&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create Application Based Integration which accepts the request body as &lt;strong&gt;Binay Format&lt;/strong&gt;.&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%2Fp33d30jpmiigdix5ejvj.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%2Fp33d30jpmiigdix5ejvj.png" alt=" " width="799" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read file using stage action as below&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%2Fn7d1hh1l12ht9f9nl27m.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%2Fn7d1hh1l12ht9f9nl27m.png" alt=" " width="799" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Remember to upload your XSD file here as below in the stage read file operation&lt;/em&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%2F8hndpkzj0jsl3guhngip.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%2F8hndpkzj0jsl3guhngip.png" alt=" " width="725" height="662"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 3: Write the file for Notification&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Using &lt;em&gt;stage action&lt;/em&gt; with &lt;strong&gt;Write Operation&lt;/strong&gt; , write a file which has been read in the early step&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;make sure upload the same XSD file for sample data.&lt;/p&gt;&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%2Fsdftzy11v0kz60v7cs0n.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%2Fsdftzy11v0kz60v7cs0n.png" alt=" " width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;STEP 4: SEND NOTIFICATIONS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hope we are familiar with OIC notification as below map data from write operation.&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%2Fsxu44g7ivbunn4i3d4lh.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%2Fsxu44g7ivbunn4i3d4lh.png" alt=" " width="799" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, we read &amp;amp; write the non-uniform csv file in OIC successfully.&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%2Fi8gv88jsyyy7527owwas.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%2Fi8gv88jsyyy7527owwas.png" alt=" " width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;a href="https://docs.oracle.com/cd/E23943_01/integration.1111/e10231/nfb.htm#CHDCIGIF" rel="noopener noreferrer"&gt;ORACLE DOC reference for XSD Script&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Calling OIC Integration from Oracle Fusion via HTTPS</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Mon, 08 Jun 2026 02:37:20 +0000</pubDate>
      <link>https://dev.to/naveen6735/calling-oic-integration-from-oracle-fusion-via-https-10co</link>
      <guid>https://dev.to/naveen6735/calling-oic-integration-from-oracle-fusion-via-https-10co</guid>
      <description>&lt;p&gt;Oracle Fusion Applications often require integration with external or internal services to extend business capabilities. Oracle Integration Cloud (OIC) serves as a powerful middleware platform to orchestrate such integrations.&lt;/p&gt;

&lt;p&gt;One of the most common patterns is invoking an &lt;strong&gt;OIC integration from Fusion using an HTTPS connection&lt;/strong&gt;, ensuring secure and reliable communication.&lt;/p&gt;

&lt;p&gt;In this blog, we'll walk through the end-to-end process, including setup, configuration, and best practices&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create an OIC Integration&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Login to Oracle Integration Cloud&lt;/li&gt;
&lt;li&gt;Navigate to Integrations → Create&lt;/li&gt;
&lt;li&gt;Choose:REST Adapter (recommended for HTTPS calls)&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Configure:&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; * Resource URI (e.g., /customer/update)
 * HTTP Method (POST/GET)
 * Request/Response payload (JSON/XML)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reference&lt;/p&gt;
&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%2Fwcf126aek11m7vd7s2tl.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%2Fwcf126aek11m7vd7s2tl.png" alt=" " width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Request Payload:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Make sure you selected&lt;br&gt;
What is the media-type of Request Body? (Content-Type Header)&lt;br&gt;
&lt;strong&gt;URL-encoded&lt;/strong&gt; for https call acceptance&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%2F5qygwicmeh0savaarzad.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%2F5qygwicmeh0savaarzad.png" alt=" " width="780" height="747"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Response Payload:&lt;/strong&gt;&lt;br&gt;
I drop the xml reference here for response payload&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;xm:schema&lt;/span&gt; &lt;span class="na"&gt;xmlns:xm=&lt;/span&gt;&lt;span class="s"&gt;"http://www.w3.org/2001/XMLSchema"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!-- Root element--&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;xm:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"root"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"root"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="c"&gt;&amp;lt;!-- Complex type--&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;xm:complexType&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"root"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;xm:sequence&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;xm:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"outcome"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"xm:float"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;xm:element&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"Instance_ID"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"xm:string"&lt;/span&gt;&lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
              &lt;span class="nt"&gt;&amp;lt;/xm:sequence&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;/xm:complexType&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/xm:schema&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fwdmm40v5oqrfc3mvwavr.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%2Fwdmm40v5oqrfc3mvwavr.png" alt=" " width="709" height="709"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create an JavaScript function using libraries&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;u&gt;&lt;em&gt;Navigations&lt;/em&gt;&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;Under Design --&amp;gt;libraries--&amp;gt;upload your js function&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%2Fp3h0uvmo8j5vw3dxoonj.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%2Fp3h0uvmo8j5vw3dxoonj.png" alt=" " width="800" height="270"&gt;&lt;/a&gt;&lt;br&gt;
Under Design --&amp;gt;libraries--&amp;gt;upload your js function&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:Call Js function in integration&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;call Js function in your designing &amp;amp; map respective inputs to your function&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%2Fo0oairbvridsyed1zsxw.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%2Fo0oairbvridsyed1zsxw.png" alt=" " width="800" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Map the response of integration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As below maps the final response.&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%2Fu6i9gv6359dx3k8agpni.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%2Fu6i9gv6359dx3k8agpni.png" alt=" " width="800" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Map the primary business identifiers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Active the Integration&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Try to run &amp;amp; collect your &lt;strong&gt;endpoint Metadata&lt;/strong&gt;&lt;/p&gt;&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%2F9f1t2m9ly6yvyo4o2c93.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%2F9f1t2m9ly6yvyo4o2c93.png" alt=" " width="800" height="518"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Fusion BIP https connection configuration&lt;/strong&gt;&lt;br&gt;
Now we will map the integration connection details in fusion .&lt;/p&gt;

&lt;p&gt;So for that we will login &lt;em&gt;fusion/analytics--&amp;gt;Under profile Icon right side [Administration]--&amp;gt;Publisher[Manage Publisher]&lt;/em&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%2Fwg3cpsn1iknw8j84hu5g.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%2Fwg3cpsn1iknw8j84hu5g.png" alt=" " width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Under HTTP creation data source with OIC login details&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%2Fcgjb2mhez4jslli9vbvl.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%2Fcgjb2mhez4jslli9vbvl.png" alt=" " width="800" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Fusion BIP Data Model creation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now choose the Data Source as HTTPS connection &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%2F238m4bkfst69ikfokg0d.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%2F238m4bkfst69ikfokg0d.png" alt=" " width="799" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;fill respective details as below
&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%2Fl2ywxsd2qqr8e5i2nblr.png" alt=" " width="799" height="385"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Testing&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Run the data model with passing parameters , it will hit the integration as Input which we earlier given as request payload.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The response will display as below, which is back from integration.&lt;/p&gt;&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%2Ftmbl1vmowf2e5x8pyfi5.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%2Ftmbl1vmowf2e5x8pyfi5.png" alt=" " width="799" height="266"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now we will see the Integration track Instance&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%2F5sibigntpxkb9s2d6p5k.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%2F5sibigntpxkb9s2d6p5k.png" alt=" " width="800" height="234"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By following the steps above setting up OIC, configuring HTTPS calls, handling authentication, and securing communication you can build reliable and scalable integrations.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Change VBCS Default Oracle Background to a Custom Image</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Sat, 06 Jun 2026 16:01:02 +0000</pubDate>
      <link>https://dev.to/naveen6735/change-vbcs-default-oracle-background-to-a-custom-image-9p5</link>
      <guid>https://dev.to/naveen6735/change-vbcs-default-oracle-background-to-a-custom-image-9p5</guid>
      <description>&lt;p&gt;Oracle Visual Builder Cloud Service (VBCS) provides a clean default UI, but often, applications require branding or a more personalized look and feel. One simple yet effective customization is replacing the default background with a custom image.&lt;/p&gt;

&lt;p&gt;In this blog, we'll walk through how to change the default Oracle VBCS background to a custom image in a few easy steps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Upload Your Custom Image&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By default, applications have UI like below&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%2Fkrdhwfkkilw5z8edgunb.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%2Fkrdhwfkkilw5z8edgunb.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's upload your custom image in VBCS application&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using Control &amp;amp; Navigation will upload image&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%2F84n3gt1cx8dry8ovqotn.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%2F84n3gt1cx8dry8ovqotn.png" alt=" " width="800" height="522"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now we will upload image in data as below&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%2F9yt8oa0cn9l42qj4452i.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%2F9yt8oa0cn9l42qj4452i.png" alt=" " width="799" height="352"&gt;&lt;/a&gt;&lt;br&gt;
Theme also choose here&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%2F76w0lv11vkb139hfm44d.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%2F76w0lv11vkb139hfm44d.png" alt=" " width="799" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Run Preview of your application page &amp;amp; Inspect image for entire VBCS Url&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%2Flha2pnagfaikavyze3uj.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%2Flha2pnagfaikavyze3uj.png" alt=" " width="799" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Add Custom CSS&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%2Fg2ycpaitic8xf45f9gvb.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%2Fg2ycpaitic8xf45f9gvb.png" alt=" " width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure you will remove the image component from the page after you got the Url&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%2F9w2up2ul63cdz8k8gm7v.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%2F9w2up2ul63cdz8k8gm7v.png" alt=" " width="800" height="595"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Final Preview&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%2F33dvbvwztw05m2qd7vm8.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%2F33dvbvwztw05m2qd7vm8.png" alt=" " width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Use optimized images (for faster loading)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Agentless Polling in Oracle Integration Using Public Gateway and ATP</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Fri, 05 Jun 2026 15:13:41 +0000</pubDate>
      <link>https://dev.to/naveen6735/agentless-polling-in-oracle-integration-using-public-gateway-and-atp-4805</link>
      <guid>https://dev.to/naveen6735/agentless-polling-in-oracle-integration-using-public-gateway-and-atp-4805</guid>
      <description>&lt;h2&gt;
  
  
  Enabling Secure Inbound Polling Without Connectivity Agent
&lt;/h2&gt;

&lt;p&gt;In Oracle Integration (OIC), polling-based integrations are a common way to process database-driven events. This blog walks through a &lt;strong&gt;simple and practical polling use case&lt;/strong&gt; using the classic &lt;strong&gt;EMP table&lt;/strong&gt;, enhanced with a custom column to control processing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use Case Overview&lt;/strong&gt;&lt;br&gt;
We want to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add a column to track whether a record needs processing&lt;/li&gt;
&lt;li&gt;Use OIC to poll records from EMP table&lt;/li&gt;
&lt;li&gt;Process only specific rows&lt;/li&gt;
&lt;li&gt;Update status after processing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create ATP Connection&lt;/strong&gt;&lt;br&gt;
The Below is Reference for Oracle ATP connection in OIC.&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%2Flnzrp81iu627w1y66uk1.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%2Flnzrp81iu627w1y66uk1.png" alt=" " width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create Integration&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I Prefer the Application Integration, Polling mechanism will work in the Initial Endpoint in the Integration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Call ATP Here as like below.&lt;/p&gt;&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%2Fjy0xorjnpne94x61z6xs.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%2Fjy0xorjnpne94x61z6xs.png" alt=" " width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Make sure choose the &lt;strong&gt;Review the polling strategy and specify polling options&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Apply your requirement handling in the read &amp;amp; unread value W.R.T    perform on the Column [&lt;u&gt;HIKE is a column for my case&lt;/u&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%2Fk9bp0f43hhn28u7j8cxb.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%2Fk9bp0f43hhn28u7j8cxb.png" alt=" " width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whenever I update in &lt;u&gt;HIKE column&lt;/u&gt; to &lt;u&gt;"NO"&lt;/u&gt;, The integration polling happens using ATP Polling Event &amp;amp; It will update the respective rows to &lt;u&gt;"YES"&lt;/u&gt;
&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%2F8a8ieftyltnmuxnlroy6.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%2F8a8ieftyltnmuxnlroy6.png" alt=" " width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Final Integration Design as below&lt;/strong&gt;&lt;br&gt;
I mapped EMPNAME as Primary Business identifier for track. &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%2Fk9eq0f10h2kdf55p079p.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%2Fk9eq0f10h2kdf55p079p.png" alt=" " width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3:TEST&lt;/strong&gt;&lt;br&gt;
I will update as below&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%2F8f80aqm3wgyr0w309log.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%2F8f80aqm3wgyr0w309log.png" alt=" " width="800" height="586"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 4:Integration Observation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It will automatically calls &amp;amp; update the field to "YES"
&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%2Fhupf8qbe3bmwif1z0rit.png" alt=" " width="799" height="220"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Full Flow Summary&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;DB Record Update → HIKE = 'NO'&lt;/li&gt;
&lt;li&gt;OIC Polling Query Runs&lt;/li&gt;
&lt;li&gt;Record is Picked&lt;/li&gt;
&lt;li&gt;Integration Logic Executes&lt;/li&gt;
&lt;li&gt;Record Updated → HIKE = 'YES'&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This EMP table polling example demonstrates a lightweight and efficient pattern for OIC integrations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Add a flag column&lt;/li&gt;
&lt;li&gt; Poll using a filter condition&lt;/li&gt;
&lt;li&gt; Process and update status&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Combined with OIC Public Gateway and ATP Adapter, this becomes a &lt;strong&gt;fully cloud-native solution&lt;/strong&gt; without any Connectivity Agent dependency.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>OIC Developer Guide to Create AR Customer Contact Email &amp; Phone in Oracle Fusion Using SOAP (mergePerson)</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Thu, 04 Jun 2026 16:01:53 +0000</pubDate>
      <link>https://dev.to/naveen6735/oic-developer-guide-to-create-ar-customer-contact-email-phone-in-oracle-fusion-using-soap-24h6</link>
      <guid>https://dev.to/naveen6735/oic-developer-guide-to-create-ar-customer-contact-email-phone-in-oracle-fusion-using-soap-24h6</guid>
      <description>&lt;p&gt;In Oracle Fusion, AR Customer Contacts are stored as &lt;strong&gt;Party Relationships&lt;/strong&gt;. Adding or updating contact details such as &lt;strong&gt;phone number&lt;/strong&gt; and &lt;strong&gt;email address&lt;/strong&gt; requires interaction with the &lt;strong&gt;Foundation Person Service SOAP API&lt;/strong&gt;.&lt;br&gt;
This guide walks you through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identifying required data (PartyId &amp;amp; RelationshipId)&lt;/li&gt;
&lt;li&gt;Using SOAP API to create contact points&lt;/li&gt;
&lt;li&gt;Verifying data in backend tables&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Identify Customer Contact Details&lt;/strong&gt;&lt;br&gt;
 &lt;em&gt;Relationship Information&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fusion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hz_relationships&lt;/span&gt; &lt;span class="k"&gt;where&lt;/span&gt; &lt;span class="n"&gt;relationship_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;300000159607279&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Ftb7yi7ae1mijoo0cfjz6.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%2Ftb7yi7ae1mijoo0cfjz6.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Party Information&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;select&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="n"&gt;fusion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hz_parties&lt;/span&gt; &lt;span class="k"&gt;where&lt;/span&gt; &lt;span class="n"&gt;party_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;300000159607277&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Faavjkgfgv1bt78wysd9d.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%2Faavjkgfgv1bt78wysd9d.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Use SOAP API to Create Contact Details&lt;/strong&gt;&lt;br&gt;
&lt;u&gt;&lt;em&gt;WSDL Endpoint:&lt;/em&gt;&lt;/u&gt;&lt;br&gt;
Use SOAP API &lt;strong&gt;&lt;em&gt;/crmService/FoundationPartiesPersonService&lt;/em&gt;&lt;/strong&gt; to add new phone number and email for this AR Customer Contact&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operation:mergePerson&lt;/strong&gt;&lt;br&gt;
This API is used to update or merge person-related information, including contact points.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Sample SOAP Request&lt;/strong&gt;&lt;br&gt;
Below is a working payload to create both email and phone:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;soapenv:Envelope&lt;/span&gt; &lt;span class="na"&gt;xmlns:soapenv=&lt;/span&gt;&lt;span class="s"&gt;"http://schemas.xmlsoap.org/soap/envelope/"&lt;/span&gt;
                  &lt;span class="na"&gt;xmlns:typ=&lt;/span&gt;&lt;span class="s"&gt;"http://xmlns.oracle.com/apps/cdm/foundation/parties/personService/applicationModule/types/"&lt;/span&gt;
                  &lt;span class="na"&gt;xmlns:per=&lt;/span&gt;&lt;span class="s"&gt;"http://xmlns.oracle.com/apps/cdm/foundation/parties/personService/"&lt;/span&gt;
                  &lt;span class="na"&gt;xmlns:rel=&lt;/span&gt;&lt;span class="s"&gt;"http://xmlns.oracle.com/apps/cdm/foundation/parties/relationshipService/"&lt;/span&gt;
                  &lt;span class="na"&gt;xmlns:con=&lt;/span&gt;&lt;span class="s"&gt;"http://xmlns.oracle.com/apps/cdm/foundation/parties/contactPointService/"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;soapenv:Header/&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;soapenv:Body&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;typ:mergePerson&amp;gt;&lt;/span&gt;
         &lt;span class="nt"&gt;&amp;lt;typ:personParty&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;per:PartyId&amp;gt;&lt;/span&gt;300000159607277&lt;span class="nt"&gt;&amp;lt;/per:PartyId&amp;gt;&lt;/span&gt;

            &lt;span class="nt"&gt;&amp;lt;per:Relationship&amp;gt;&lt;/span&gt;
               &lt;span class="nt"&gt;&amp;lt;rel:RelationshipId&amp;gt;&lt;/span&gt;300000159607279&lt;span class="nt"&gt;&amp;lt;/rel:RelationshipId&amp;gt;&lt;/span&gt;

               &lt;span class="c"&gt;&amp;lt;!-- Email Creation --&amp;gt;&lt;/span&gt;
               &lt;span class="nt"&gt;&amp;lt;rel:Email&amp;gt;&lt;/span&gt;
                  &lt;span class="nt"&gt;&amp;lt;con:OwnerTableName&amp;gt;&lt;/span&gt;HZ_PARTIES&lt;span class="nt"&gt;&amp;lt;/con:OwnerTableName&amp;gt;&lt;/span&gt;
                  &lt;span class="nt"&gt;&amp;lt;con:CreatedByModule&amp;gt;&lt;/span&gt;HZ_WS&lt;span class="nt"&gt;&amp;lt;/con:CreatedByModule&amp;gt;&lt;/span&gt;
                  &lt;span class="nt"&gt;&amp;lt;con:ContactPointPurpose&amp;gt;&lt;/span&gt;BUSINESS&lt;span class="nt"&gt;&amp;lt;/con:ContactPointPurpose&amp;gt;&lt;/span&gt;
                  &lt;span class="nt"&gt;&amp;lt;con:EmailAddress&amp;gt;&lt;/span&gt;Addtest@test.com&lt;span class="nt"&gt;&amp;lt;/con:EmailAddress&amp;gt;&lt;/span&gt;
               &lt;span class="nt"&gt;&amp;lt;/rel:Email&amp;gt;&lt;/span&gt;

               &lt;span class="c"&gt;&amp;lt;!-- Phone Creation --&amp;gt;&lt;/span&gt;
               &lt;span class="nt"&gt;&amp;lt;rel:Phone&amp;gt;&lt;/span&gt;
                  &lt;span class="nt"&gt;&amp;lt;con:OwnerTableName&amp;gt;&lt;/span&gt;HZ_PARTIES&lt;span class="nt"&gt;&amp;lt;/con:OwnerTableName&amp;gt;&lt;/span&gt;
                  &lt;span class="nt"&gt;&amp;lt;con:CreatedByModule&amp;gt;&lt;/span&gt;HZ_WS&lt;span class="nt"&gt;&amp;lt;/con:CreatedByModule&amp;gt;&lt;/span&gt;
                  &lt;span class="nt"&gt;&amp;lt;con:ContactPointPurpose&amp;gt;&lt;/span&gt;BUSINESS&lt;span class="nt"&gt;&amp;lt;/con:ContactPointPurpose&amp;gt;&lt;/span&gt;
                  &lt;span class="nt"&gt;&amp;lt;con:PhoneNumber&amp;gt;&lt;/span&gt;2128811223&lt;span class="nt"&gt;&amp;lt;/con:PhoneNumber&amp;gt;&lt;/span&gt;
                  &lt;span class="nt"&gt;&amp;lt;con:PhoneExtension&amp;gt;&lt;/span&gt;999&lt;span class="nt"&gt;&amp;lt;/con:PhoneExtension&amp;gt;&lt;/span&gt;
                  &lt;span class="nt"&gt;&amp;lt;con:PhoneLineType&amp;gt;&lt;/span&gt;MOBILE&lt;span class="nt"&gt;&amp;lt;/con:PhoneLineType&amp;gt;&lt;/span&gt;
               &lt;span class="nt"&gt;&amp;lt;/rel:Phone&amp;gt;&lt;/span&gt;

            &lt;span class="nt"&gt;&amp;lt;/per:Relationship&amp;gt;&lt;/span&gt;
         &lt;span class="nt"&gt;&amp;lt;/typ:personParty&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/typ:mergePerson&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/soapenv:Body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/soapenv:Envelope&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fymteyxgzvg42fdt6f419.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%2Fymteyxgzvg42fdt6f419.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Validate Data in Frontend Screen&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%2Fxqjy52znl0oxzdeeslgc.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%2Fxqjy52znl0oxzdeeslgc.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Validate Data in Backend Tables&lt;/strong&gt;&lt;br&gt;
After successful API execution, verify using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;CONTACT_POINT_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;CONTACT_POINT_TYPE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;PHONE_TYPE&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;OWNER_TABLE_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;RELATIONSHIP_ID&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;PHONE_NUMBER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;EMAIL_ADDRESS&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;fusion&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hz_contact_points&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;creation_date&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;SYSDATE&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;created_by_module&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'HZ_WS'&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="n"&gt;owner_table_name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'HZ_PARTIES'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2F9cr4g1ceszamwd8rkofy.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%2F9cr4g1ceszamwd8rkofy.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: From OIC&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;With same WSDL :https:/crmService/FoundationPartiesPersonService?WSDL&lt;br&gt;
create Connection.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Call the connection in OIC with mergePerson Operation&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pass respective Values to it&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;br&gt;
 We successfully updated the Customer communication details using SOAP WSDL in Oracle Fusion ♥ &lt;/p&gt;

</description>
      <category>api</category>
      <category>cloud</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Enabling Oracle Fusion BI Publisher Report Access via Custom Roles &amp; Springboard</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Tue, 02 Jun 2026 16:16:47 +0000</pubDate>
      <link>https://dev.to/naveen6735/enabling-oracle-fusion-bi-publisher-report-access-via-custom-roles-springboard-503d</link>
      <guid>https://dev.to/naveen6735/enabling-oracle-fusion-bi-publisher-report-access-via-custom-roles-springboard-503d</guid>
      <description>&lt;p&gt;In Oracle Fusion, BI Publisher (BIP) reports are widely used for operational &amp;amp; analytical. However, a common requirement in enterprise implementations is to provide &lt;strong&gt;secure&lt;/strong&gt;, &lt;strong&gt;role-based access to specific reports&lt;/strong&gt; and make them easily accessible through the Springboard &lt;strong&gt;(home page)&lt;/strong&gt;.&lt;br&gt;
This blog walks you through how to:&lt;/p&gt;

&lt;p&gt;Restrict BI Publisher report access to specific users using &lt;strong&gt;custom roles&lt;/strong&gt;&lt;br&gt;
Surface the report in the &lt;strong&gt;Springboard&lt;/strong&gt; for quick access.&lt;/p&gt;

&lt;p&gt;Let's start with Custom Role&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create a Custom Role&lt;/strong&gt;&lt;br&gt;
Navigations: Under Home page--&amp;gt;Tools--&amp;gt;Security console&lt;br&gt;
create new role&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%2F6dnye7frjsr3dcfsuhns.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%2F6dnye7frjsr3dcfsuhns.png" alt=" " width="800" height="290"&gt;&lt;/a&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%2Fwtq63dsq6w87fdrqmrba.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%2Fwtq63dsq6w87fdrqmrba.png" alt=" " width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;continue with next upto User, In the user section add respective users &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%2Fobxqdhrcgwmru9wzdgwx.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%2Fobxqdhrcgwmru9wzdgwx.png" alt=" " width="800" height="344"&gt;&lt;/a&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%2F4r3tf5kdgsju0a66kg00.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%2F4r3tf5kdgsju0a66kg00.png" alt=" " width="800" height="351"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Step 2: Expose Report in Springboard&lt;/strong&gt;&lt;br&gt;
Now let’s improve usability by making the report accessible directly from the home page.&lt;br&gt;
&lt;strong&gt;Enable Sandbox&lt;/strong&gt;&lt;br&gt;
Mostly sandbox appears under &lt;strong&gt;Configuration&lt;/strong&gt; in the springboard&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%2F3dc4wrw3f8b3ae1236lm.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%2F3dc4wrw3f8b3ae1236lm.png" alt=" " width="799" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Other way to access sandbox is &lt;strong&gt;from the navigations&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%2Fggkgihshop5zliefyb4a.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%2Fggkgihshop5zliefyb4a.png" alt=" " width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once click on the sandbox, you will reflect new page like below&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%2Fcyt5hja04kcg8lggfyzb.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%2Fcyt5hja04kcg8lggfyzb.png" alt=" " width="799" height="329"&gt;&lt;/a&gt;&lt;br&gt;
 click on the create Sandbox and select above marked things.&lt;br&gt;
Provide respective details like Sandbox name &amp;amp; publish &lt;strong&gt;yes&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%2Fnumoswq9kkc1vijvw5if.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%2Fnumoswq9kkc1vijvw5if.png" alt=" " width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The next move is to click on structure&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%2Ffvucsiz1gqwwxhq51ogu.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%2Ffvucsiz1gqwwxhq51ogu.png" alt=" " width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then carefully we have to &lt;strong&gt;Create Group&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%2Fe3p6m7thsccs5uvk5or6.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%2Fe3p6m7thsccs5uvk5or6.png" alt=" " width="800" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;let provide Groups as below here &lt;strong&gt;EL Expression important&lt;/strong&gt; to note.&lt;br&gt;
Because it plays a key role in the access reports.&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%2Fdvwlti94612pitzwzwh4.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%2Fdvwlti94612pitzwzwh4.png" alt=" " width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;followed by save &amp;amp; continue.&lt;/p&gt;

&lt;p&gt;Time for &lt;strong&gt;create Page Entry&lt;/strong&gt;&lt;br&gt;
where actually report path provides here.&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%2Fxgctv8kjij31kklchqmp.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%2Fxgctv8kjij31kklchqmp.png" alt=" " width="800" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; we always create page entry under groups i.e. REPORT HUBSPOT is my group earlier.&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%2Fb5hjgc0xi44jojjg5q2m.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%2Fb5hjgc0xi44jojjg5q2m.png" alt=" " width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the dialog box &lt;strong&gt;copy entire report path with extension&lt;/strong&gt; as like above&lt;br&gt;
and validate &amp;amp; save -close safely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Test the report access&lt;/strong&gt;&lt;br&gt;
By click on the home icon you will go to springboard there you will see your created group &amp;amp; page likes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Publish the Sanbox&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you published , won't altered with the same sandbox. So be caution while doing activity &amp;amp; avoid personal bias&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%2F5cq80p1svsszor2tmw2s.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%2F5cq80p1svsszor2tmw2s.png" alt=" " width="799" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final words:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By combining BI Publisher security with Fusion role-based access control and Springboard customization, you can deliver a seamless and secure reporting experience for users.&lt;/p&gt;

&lt;p&gt;This approach not only enhances usability but also ensures compliance with organizational security standards.&lt;/p&gt;

</description>
      <category>analytics</category>
      <category>saas</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Calling GET API &amp; Mapping Response in VBCS (Service Connection)</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Sun, 31 May 2026 14:46:10 +0000</pubDate>
      <link>https://dev.to/naveen6735/calling-get-api-mapping-response-in-vbcs-service-connection-113</link>
      <guid>https://dev.to/naveen6735/calling-get-api-mapping-response-in-vbcs-service-connection-113</guid>
      <description>&lt;p&gt;In Oracle VBCS, integrating a GET API and displaying its response on the UI is one of the most common use cases. In this blog, we’ll walk through how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a GET API (ORDS)&lt;/li&gt;
&lt;li&gt; Configure Service Connection in VBCS&lt;/li&gt;
&lt;li&gt;Call API using Event Trigger&lt;/li&gt;
&lt;li&gt; Map API response to UI components&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;1. Sample GET API (ORDS)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s first create a simple GET API to fetch data from nj_dump(NJ_DUMP is a table).&lt;/p&gt;

&lt;p&gt;Below is code snippet for the creations GET API using PLSQL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plsql"&gt;&lt;code&gt;&lt;span class="k"&gt;BEGIN&lt;/span&gt;
  &lt;span class="n"&gt;ORDS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;define_template&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;p_module_name&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;nj_api&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;p_pattern&lt;/span&gt;     &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;get_data&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;

&lt;span class="k"&gt;BEGIN&lt;/span&gt;
  &lt;span class="n"&gt;ORDS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;define_handler&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;p_module_name&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;nj_api&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;p_pattern&lt;/span&gt;     &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;get_data&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;p_method&lt;/span&gt;      &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;GET&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;p_source_type&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;ORDS&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;source_type_query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;p_source&lt;/span&gt;      &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;
      SELECT name, num, dob, email
      FROM nj_dump
      WHERE num = nvl(:num,num)
    &lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;END&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="o"&gt;/&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;ENDPOINT looks like&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;GET&lt;/strong&gt; /ords//nj_api/get_data?num=101&lt;br&gt;
Before moving to VBCS kindly test it in &lt;strong&gt;POSTMAN or Curl&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Note:&lt;/strong&gt; I prefer Basic Authorization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Create Service Connection in VBCS&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Navigations&lt;/strong&gt;: Go to Services → Service Connections→ Chose define by endpoint&lt;br&gt;
Click Create&lt;br&gt;
Enter: respective Details&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%2Fw0zx9rby0ypqhdc4xs4x.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%2Fw0zx9rby0ypqhdc4xs4x.png" alt=" " width="800" height="284"&gt;&lt;/a&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%2F7ub99cfm75ih5g6qlfaw.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%2F7ub99cfm75ih5g6qlfaw.png" alt=" " width="800" height="311"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;3. Add GET Endpoint&lt;/strong&gt;&lt;br&gt;
Paste your respectively GET URL in the below bar &amp;amp; proceed next&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%2Femkemslx890e4r5h2502.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%2Femkemslx890e4r5h2502.png" alt=" " width="800" height="283"&gt;&lt;/a&gt;&lt;br&gt;
Once you done with GET REQUEST endpoint , you will able to see like this&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%2Fkp7inolfw6eifqm68e82.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%2Fkp7inolfw6eifqm68e82.png" alt=" " width="800" height="102"&gt;&lt;/a&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%2Fro8aojm5k0zhcbdddzq3.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%2Fro8aojm5k0zhcbdddzq3.png" alt=" " width="800" height="109"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;4. Create Page Variables&lt;/strong&gt;&lt;br&gt;
Under Web apps we will create type &amp;amp; variables.&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%2F7g22sbj1okxyiw8btxas.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%2F7g22sbj1okxyiw8btxas.png" alt="type" width="797" height="122"&gt;&lt;/a&gt;&lt;br&gt;
Hope you choose the type &lt;strong&gt;from endpoint&lt;/strong&gt;&lt;br&gt;
you will your endpoints here like this, pick get for our case.&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%2Fxqqwp2f6c5hp1my3q6eo.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%2Fxqqwp2f6c5hp1my3q6eo.png" alt=" " width="799" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the next step we have to select the needed column to display in the VBCS UI&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%2Fh8t2b79xfi1vas03a6em.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%2Fh8t2b79xfi1vas03a6em.png" alt=" " width="800" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;successfully create type, it will help us to create variable in the next page.&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%2Fag9tpgnwdgamdj59cphy.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%2Fag9tpgnwdgamdj59cphy.png" alt=" " width="800" height="186"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now go to variables &amp;amp; create variable, make sure select the type which you created earlier.&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%2F1o8v1m0q9clhgr8za55q.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%2F1o8v1m0q9clhgr8za55q.png" alt=" " width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5.Assign Variables to the form/page&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I created form layout, if code needed, I would provide you at end of blog.&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%2Fu4n67ohcxac2i6bjhvyy.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%2Fu4n67ohcxac2i6bjhvyy.png" alt=" " width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the same manner add all variables to the respective columns in the form.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Call GET API Using Event Trigger&lt;/strong&gt;&lt;br&gt;
Now whenever we hit the Search button, The get REST endpoint will be called return the data to form.&lt;/p&gt;

&lt;p&gt;For that we need to create an event action trigger there we will assign the get endpoint &amp;amp; collect the response from it and assign the same type.&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%2Ff8d3d9u5phz4m2gvps8e.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%2Ff8d3d9u5phz4m2gvps8e.png" alt=" " width="800" height="404"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Pass Query Parameter&lt;/strong&gt;&lt;br&gt;
choose the respective actions here &amp;amp; map the num Variable to the GET API endpoint&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%2Fgtev7wj6j9yz389c0jtm.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%2Fgtev7wj6j9yz389c0jtm.png" alt=" " width="800" height="394"&gt;&lt;/a&gt;&lt;br&gt;
Mapper reference&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%2Fe7xy49738orpa65z1b1l.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%2Fe7xy49738orpa65z1b1l.png" alt=" " width="800" height="296"&gt;&lt;/a&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%2Fdl2f3qrm6by7dy62v99b.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%2Fdl2f3qrm6by7dy62v99b.png" alt=" " width="800" height="265"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Testing&lt;/strong&gt;&lt;br&gt;
Working as expected:&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%2F5ytqeg5fohmjoez9epvr.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%2F5ytqeg5fohmjoez9epvr.png" alt=" " width="799" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. End-to-End Flow&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User enters num&lt;/li&gt;
&lt;li&gt;Event Trigger fires (button / field change)&lt;/li&gt;
&lt;li&gt;GET API is called via Service Connection&lt;/li&gt;
&lt;li&gt;Data is fetched from DB&lt;/li&gt;
&lt;li&gt;Response stored in apiResponse&lt;/li&gt;
&lt;li&gt;UI automatically updates&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We successfully completed GET API calling in VBCS with help of Service connection &amp;amp; on button event trigger.&lt;/p&gt;

&lt;p&gt;Try with Variable &lt;strong&gt;onValueChanged&lt;/strong&gt; Event instead of button&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/naveen-6735/melanies_smoothies/blob/main/ORDS_CURD_FORM" rel="noopener noreferrer"&gt;Form code:&lt;/a&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>sql</category>
      <category>tutorial</category>
      <category>ui</category>
    </item>
    <item>
      <title>Oracle Fusion Report Scheduling with Skip Conditions</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Sat, 30 May 2026 14:48:41 +0000</pubDate>
      <link>https://dev.to/naveen6735/oracle-fusion-report-scheduling-with-skip-conditions-5051</link>
      <guid>https://dev.to/naveen6735/oracle-fusion-report-scheduling-with-skip-conditions-5051</guid>
      <description>&lt;p&gt;In Oracle Fusion Applications, report scheduling plays a crucial role in automating business processes such as invoice generation, reconciliation, and operational reporting. However, not every scheduled job needs to run every time especially &lt;strong&gt;when there’s no relevant data&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This is where &lt;strong&gt;skip conditions&lt;/strong&gt; come into play.&lt;/p&gt;

&lt;p&gt;Skip conditions allow you to control whether a scheduled report or job should execute based on predefined logic. &lt;/p&gt;

&lt;p&gt;Instead of wasting system resources, unnecessary runs are avoided, making scheduling smarter and more efficient.&lt;/p&gt;

&lt;p&gt;Okay Let's drive-in into how we can save system resources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Create your query in the Data Model.&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%2Fmgmn83gw4m9snqld4yse.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%2Fmgmn83gw4m9snqld4yse.png" alt="Creation Data Model with SQL query" width="799" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.Write Event Trigger&lt;/strong&gt;&lt;br&gt;
Simple choose Event Trigger in the same data model. Select Event Type as Scheduled.&lt;/p&gt;

&lt;p&gt;FYR&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%2F1kp1gi1kgvzrlwfkn52k.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%2F1kp1gi1kgvzrlwfkn52k.png" alt=" " width="800" height="165"&gt;&lt;/a&gt;&lt;br&gt;
Now write logic for when it should be skip. In my case when Data model no return any data, then won't triggers to clients.&lt;/p&gt;

&lt;p&gt;SQL Query Reference when no data returns from data model.&lt;br&gt;
&lt;code&gt;SELECT DISTINCT 'true'&lt;br&gt;
FROM DUAL&lt;br&gt;
WHERE EXISTS (&lt;br&gt;
SELECT 1&lt;br&gt;
FROM abc//here your data model conditional logic&lt;br&gt;
)&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;3.Build Report with your template &amp;amp; schedule it&lt;/strong&gt;&lt;br&gt;
 Time to schedule the report as below. You can add your parameters also in your data model.&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%2Fn97kgq6wz2fz7tc60o50.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%2Fn97kgq6wz2fz7tc60o50.png" alt="Schedule Option" width="800" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;choose your delivery channel.
-In the Schedule Tab, select your frequency &amp;amp; Define Schedule Trigger(It's important here)&lt;/li&gt;
&lt;li&gt;Here pick your event trigger which has written early in the data model .
FYR&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%2Fqcgc1golhl1gdz4kuf68.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%2Fqcgc1golhl1gdz4kuf68.png" alt=" " width="799" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclsuion&lt;/strong&gt;&lt;br&gt;
By adopting skip conditions, organizations can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reduce system overhead&lt;/li&gt;
&lt;li&gt;Improve report relevance&lt;/li&gt;
&lt;li&gt;Enhance overall scheduling efficiency&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>automation</category>
      <category>saas</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Building a Custom API Using PL/SQL with ORDS</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Fri, 29 May 2026 09:58:10 +0000</pubDate>
      <link>https://dev.to/naveen6735/building-a-custom-api-using-plsql-with-ords-58m0</link>
      <guid>https://dev.to/naveen6735/building-a-custom-api-using-plsql-with-ords-58m0</guid>
      <description>&lt;p&gt;In modern application development, exposing database logic as REST APIs is a powerful way to integrate systems. Oracle REST Data Services (ORDS) makes it easy to turn PL/SQL into RESTful APIs without needing a separate backend service.&lt;/p&gt;

&lt;p&gt;In this blog, we’ll walk through how to create a simple POST API using ORDS and PL/SQL to insert data into a table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pre-requisites&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A cloud-based ATP wallet (I prefer)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's start how we create the APIs on the top of any custom table which relies on databases&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create a table in the oracle SQL Developer&lt;/strong&gt;&lt;br&gt;
and followed by create an ORDS Module&lt;br&gt;
&lt;strong&gt;1.Create an ORDS Module&lt;/strong&gt;&lt;br&gt;
A module is a logical container for related REST endpoints.&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%2Fc9ituticvfkdrddgykx3.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%2Fc9ituticvfkdrddgykx3.png" alt="Table &amp;amp; ORDS Module creation" width="624" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What this Module does ??&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Creates a module named nj_api&lt;/li&gt;
&lt;li&gt;Defines base URL:
&lt;a href="http://server_name/ords/table_Schema/nj_api/" rel="noopener noreferrer"&gt;http://server_name/ords/table_Schema/nj_api/&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2: Define a Template (Endpoint Path)&lt;/strong&gt;&lt;br&gt;
A template represents the API endpoint path.&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%2Fwwvbt03hlib0rzxlnlug.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%2Fwwvbt03hlib0rzxlnlug.png" alt="Template Creation" width="462" height="171"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It defines how Endpoint URL:/ords/table_schema/nj_api/insert_data&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3: Define the Handler (Business Logic)&lt;/strong&gt;&lt;br&gt;
The handler contains the logic executed when the API is called.&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%2F3t0jly549sb4ed62myv0.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%2F3t0jly549sb4ed62myv0.png" alt="Business logic for API" width="639" height="351"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Key Concepts:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;p_method =&amp;gt; 'POST': Defines HTTP method&lt;/li&gt;
&lt;li&gt;p_source_type =&amp;gt; ORDS.source_type_plsql: Uses PL/SQL block&lt;/li&gt;
&lt;li&gt;Bind variables (:name, :num, etc.) map directly to JSON request body parameters
&lt;strong&gt;4: Testing the API&lt;/strong&gt;
Using Tools like Postman,cURL,ORDS REST Workshop
I tested with Postman
FYR&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%2Fwfifankeeseipkq9grlv.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%2Fwfifankeeseipkq9grlv.png" alt="POSTMAN TESTED" width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's call same in Oracle VBCS in new blog.&lt;/strong&gt;..&lt;br&gt;
Try other methods like Delete, PATCH &amp;amp; GET &lt;/p&gt;

</description>
      <category>api</category>
      <category>database</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Inventory Aging in Oracle Fusion</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Thu, 28 May 2026 13:27:44 +0000</pubDate>
      <link>https://dev.to/naveen6735/inventory-aging-in-oracle-fusion-2ai3</link>
      <guid>https://dev.to/naveen6735/inventory-aging-in-oracle-fusion-2ai3</guid>
      <description>&lt;p&gt;&lt;em&gt;A Technical Deep Dive into Hybrid Valuation Design&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem Statement&lt;/strong&gt;&lt;br&gt;
Building an &lt;strong&gt;Inventory Aging Report in Oracle Fusion&lt;/strong&gt; seems straightforward:&lt;br&gt;
&lt;strong&gt;Goal&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;→ Bucket inventory by age (0–30, 31–60…)&lt;/li&gt;
&lt;li&gt;→ Show quantity and value&lt;/li&gt;
&lt;li&gt;→ Match Oracle inventory valuation
However, this quickly becomes complex due to:&lt;/li&gt;
&lt;li&gt;Separation of transaction data vs costing data&lt;/li&gt;
&lt;li&gt;Oracle’s layer-based costing engine&lt;/li&gt;
&lt;li&gt;Mismatch between operational and financial views&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Hybrid Model – Technical Design&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Transactions → Aging → Bucket Qty → Clean Qty → Denominator
Valuation → Total Amount
Final → Allocation → Report
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep refer entire code for production ready Inventory aging report.&lt;br&gt;
[(&lt;a href="https://github.com/naveen-6735/SkyHigh/blob/main/Dev_to.sql)" rel="noopener noreferrer"&gt;https://github.com/naveen-6735/SkyHigh/blob/main/Dev_to.sql)&lt;/a&gt;]&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Using SQL Developer Web (Database Actions) in ATP to Create Tables &amp; REST APIs</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Sun, 24 May 2026 14:07:27 +0000</pubDate>
      <link>https://dev.to/naveen6735/using-sql-developer-web-database-actions-in-atp-to-create-tables-rest-apis-2j27</link>
      <guid>https://dev.to/naveen6735/using-sql-developer-web-database-actions-in-atp-to-create-tables-rest-apis-2j27</guid>
      <description>&lt;p&gt;If you're working on &lt;strong&gt;Oracle Autonomous Transaction Processing (ATP)&lt;/strong&gt;, one of the most powerful tools available is &lt;strong&gt;SQL Developer Web&lt;/strong&gt;, also called &lt;strong&gt;Database Actions&lt;/strong&gt;. It allows you to manage your database entirely from the browser no installation required.&lt;/p&gt;

&lt;p&gt;In this blog, I'll walk you through:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Connecting to ATP using Database Actions&lt;/li&gt;
&lt;li&gt;Creating a table using SQL Developer Web&lt;/li&gt;
&lt;li&gt;Enabling REST APIs automatically using ORDS&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;What is SQL Developer Web (Database Actions) ?&lt;/strong&gt;&lt;br&gt;
Oracle provides a browser based interface called &lt;strong&gt;Database Actions&lt;/strong&gt;, which is essentially an online version of SQL Developer.&lt;br&gt;
It allows you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Run SQL and PL/SQL&lt;/li&gt;
&lt;li&gt;Create tables and objects&lt;/li&gt;
&lt;li&gt;Build REST APIs&lt;/li&gt;
&lt;li&gt;Monitor performance&lt;/li&gt;
&lt;li&gt;Load data and manage users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Access Database Actions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ensure you have ATP wallet (zip file).&lt;br&gt;
When you zipped it. You will find that the &lt;strong&gt;README&lt;/strong&gt; file. In that file you will see an URL below the &lt;strong&gt;Database Actions&lt;/strong&gt;.That URL helps us to login into SQL Developer.&lt;br&gt;
FYR, Login Page of Web sql Developer &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%2Fh1d9kg92oq6xu7rm2wo4.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%2Fh1d9kg92oq6xu7rm2wo4.png" alt=" " width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Open SQL Worksheet&lt;/strong&gt;&lt;br&gt;
Once inside:&lt;br&gt;
Click: SQL → Have a Tour !!&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%2F00gvs0mzkqme0frdadlb.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%2F00gvs0mzkqme0frdadlb.png" alt=" " width="799" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Playground for your action &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%2Ff0zyv39ymddj3yh7vy41.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%2Ff0zyv39ymddj3yh7vy41.png" alt=" " width="800" height="364"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Create a Table&lt;/strong&gt;&lt;br&gt;
Run the sql &lt;br&gt;
&lt;code&gt;CREATE TABLE nj_dump (&lt;br&gt;
    name   VARCHAR2(200),&lt;br&gt;
    num    NUMBER,&lt;br&gt;
    dob    DATE,&lt;br&gt;
    email  VARCHAR2(200)&lt;br&gt;
);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Insert you can perform on your tables&lt;br&gt;
Hey you know I learnt new way to insertion with below stmt&lt;/p&gt;

&lt;p&gt;&lt;code&gt;INSERT INTO NJ_DUMP&lt;br&gt;
VALUES ('Naveen Jejji', 567, DATE '2003-06-12', 'njejji@ok.com');&lt;/code&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%2Fv6z5f1myvg33h5vqbk9v.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%2Fv6z5f1myvg33h5vqbk9v.png" alt=" " width="800" height="622"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Enable REST API&lt;/strong&gt;&lt;br&gt;
Now we use same table which we created earlier and enable rest.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can search your table in Navigator panel as&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%2Fcrtwut3d25yh5vq73rhy.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%2Fcrtwut3d25yh5vq73rhy.png" alt=" " width="800" height="399"&gt;&lt;/a&gt;&lt;br&gt;
 Right Click on your table , you will get few more options among them .Choose the &lt;strong&gt;REST&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%2Fjpgzs26hc0c9doqllmlq.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%2Fjpgzs26hc0c9doqllmlq.png" alt=" " width="800" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once you done with REST selection, you will be able to get the Curl options like below&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%2Fmnl035816g9jg863ku2r.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%2Fmnl035816g9jg863ku2r.png" alt=" " width="800" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Tooke entire curl and Paste in your POSTMAN application and provide necessary authentications details as below &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%2Fhdxxzfau23wdxj8sz70a.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%2Fhdxxzfau23wdxj8sz70a.png" alt=" " width="799" height="409"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We are Done&lt;/strong&gt;&lt;br&gt;
Try yourself for POST operation from POSTMAN applications.&lt;/p&gt;

&lt;p&gt;In the next blog, I will cover the how we call this in our modern VBCS &lt;/p&gt;

</description>
      <category>oracle</category>
      <category>webdev</category>
    </item>
    <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>
  </channel>
</rss>
