<?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.us-east-2.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>Using PL/SQL in Oracle Fusion BI Publisher Reports for Dynamic Data Filtering</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Sun, 19 Jul 2026 07:14:19 +0000</pubDate>
      <link>https://dev.to/naveen6735/using-plsql-in-oracle-fusion-bi-publisher-reports-for-dynamic-data-filtering-1dm1</link>
      <guid>https://dev.to/naveen6735/using-plsql-in-oracle-fusion-bi-publisher-reports-for-dynamic-data-filtering-1dm1</guid>
      <description>&lt;p&gt;Oracle Fusion BI Publisher supports &lt;strong&gt;PL/SQL Data Sets&lt;/strong&gt;, allowing report developers to implement business logic directly within a report. &lt;/p&gt;

&lt;p&gt;This approach is useful when report data needs to be dynamically filtered or transformed based on user input.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirement&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this example, users can select a &lt;strong&gt;&lt;em&gt;Supplier Type parameter&lt;/em&gt;&lt;/strong&gt; from the following values:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;SUPPLIER&lt;/li&gt;
&lt;li&gt;PUBLIC SECTOR COMPANIES&lt;/li&gt;
&lt;li&gt;INSURANCE&lt;/li&gt;
&lt;li&gt;INTERCOMPANY&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Based on the selected value, the report retrieves matching supplier records from the Fusion Procurement supplier table (POZ_SUPPLIERS_V)&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  &lt;strong&gt;Click to view the full PL/SQL Data Set code&lt;/strong&gt;
  &lt;br&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plsql"&gt;&lt;code&gt;&lt;span class="k"&gt;DECLARE&lt;/span&gt;

    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="c1"&gt;-- Define a REF CURSOR type.&lt;/span&gt;
    &lt;span class="c1"&gt;-- BI Publisher uses a cursor to return the final result set back to&lt;/span&gt;
    &lt;span class="c1"&gt;-- the report output.&lt;/span&gt;
    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="k"&gt;TYPE&lt;/span&gt; &lt;span class="n"&gt;refcursor&lt;/span&gt; &lt;span class="kr"&gt;IS&lt;/span&gt; &lt;span class="kt"&gt;REF&lt;/span&gt; &lt;span class="k"&gt;CURSOR&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="c1"&gt;-- Cursor variable that will hold the query result.&lt;/span&gt;
    &lt;span class="c1"&gt;-- BI Publisher expects the data to be returned through xdo_cursor.&lt;/span&gt;
    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="n"&gt;xdo_cursor&lt;/span&gt; &lt;span class="n"&gt;REFCURSOR&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="c1"&gt;-- Variable used to store the supplier type returned by the function.&lt;/span&gt;
    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="n"&gt;l_supplier_filter&lt;/span&gt; &lt;span class="kt"&gt;VARCHAR2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="c1"&gt;-- Local PL/SQL Function: Supplier_type&lt;/span&gt;
    &lt;span class="c1"&gt;--&lt;/span&gt;
    &lt;span class="c1"&gt;-- Purpose:&lt;/span&gt;
    &lt;span class="c1"&gt;--   Accepts the report parameter P_VENDOR_TYPE and validates the value.&lt;/span&gt;
    &lt;span class="c1"&gt;--&lt;/span&gt;
    &lt;span class="c1"&gt;-- Allowed Values:&lt;/span&gt;
    &lt;span class="c1"&gt;--   SUPPLIER&lt;/span&gt;
    &lt;span class="c1"&gt;--   PUBLIC SECTOR COMPANIES&lt;/span&gt;
    &lt;span class="c1"&gt;--   INSURANCE&lt;/span&gt;
    &lt;span class="c1"&gt;--   INTERCOMPANY&lt;/span&gt;
    &lt;span class="c1"&gt;--&lt;/span&gt;
    &lt;span class="c1"&gt;-- Returns:&lt;/span&gt;
    &lt;span class="c1"&gt;--   The corresponding supplier type value.&lt;/span&gt;
    &lt;span class="c1"&gt;--   If no valid value is found, returns 'NA'.&lt;/span&gt;
    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="k"&gt;FUNCTION&lt;/span&gt; &lt;span class="n"&gt;Supplier_type&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;p_in_vendor_type&lt;/span&gt; &lt;span class="ow"&gt;IN&lt;/span&gt; &lt;span class="kt"&gt;VARCHAR2&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="kt"&gt;VARCHAR2&lt;/span&gt;
    &lt;span class="kr"&gt;IS&lt;/span&gt;
        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="c1"&gt;-- Variable to hold the function result.&lt;/span&gt;
        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="n"&gt;l_supplier_type_rtn&lt;/span&gt; &lt;span class="kt"&gt;VARCHAR2&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;BEGIN&lt;/span&gt;

        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="c1"&gt;-- Check if the selected supplier type is SUPPLIER.&lt;/span&gt;
        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="k"&gt;IF&lt;/span&gt; &lt;span class="n"&gt;p_in_vendor_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;SUPPLIER&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt; &lt;span class="kr"&gt;THEN&lt;/span&gt;

            &lt;span class="n"&gt;l_supplier_type_rtn&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;SUPPLIER&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="c1"&gt;-- Check if the selected supplier type is PUBLIC SECTOR COMPANIES.&lt;/span&gt;
        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="kr"&gt;ELSIF&lt;/span&gt; &lt;span class="n"&gt;p_in_vendor_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PUBLIC SECTOR COMPANIES&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt; &lt;span class="kr"&gt;THEN&lt;/span&gt;

            &lt;span class="n"&gt;l_supplier_type_rtn&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;PUBLIC SECTOR COMPANIES&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="c1"&gt;-- Check if the selected supplier type is INSURANCE.&lt;/span&gt;
        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="kr"&gt;ELSIF&lt;/span&gt; &lt;span class="n"&gt;p_in_vendor_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;INSURANCE&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt; &lt;span class="kr"&gt;THEN&lt;/span&gt;

            &lt;span class="n"&gt;l_supplier_type_rtn&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;INSURANCE&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="c1"&gt;-- Check if the selected supplier type is INTERCOMPANY.&lt;/span&gt;
        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="kr"&gt;ELSIF&lt;/span&gt; &lt;span class="n"&gt;p_in_vendor_type&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;INTERCOMPANY&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt; &lt;span class="kr"&gt;THEN&lt;/span&gt;

            &lt;span class="n"&gt;l_supplier_type_rtn&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;INTERCOMPANY&lt;/span&gt;&lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="c1"&gt;-- If none of the above values match, return NA.&lt;/span&gt;
        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="kr"&gt;ELSE&lt;/span&gt;

            &lt;span class="n"&gt;l_supplier_type_rtn&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;NA&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="k"&gt;IF&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="c1"&gt;-- Return the validated supplier type value.&lt;/span&gt;
        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="n"&gt;l_supplier_type_rtn&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;EXCEPTION&lt;/span&gt;

        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="c1"&gt;-- Handle any unexpected errors and return NA.&lt;/span&gt;
        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="k"&gt;WHEN&lt;/span&gt; &lt;span class="k"&gt;OTHERS&lt;/span&gt; &lt;span class="kr"&gt;THEN&lt;/span&gt;

            &lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="o"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;NA&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="n"&gt;Supplier_type&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;BEGIN&lt;/span&gt;

    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="c1"&gt;-- Pass the BI Publisher report parameter P_VENDOR_TYPE&lt;/span&gt;
    &lt;span class="c1"&gt;-- into the Supplier_type function.&lt;/span&gt;
    &lt;span class="c1"&gt;--&lt;/span&gt;
    &lt;span class="c1"&gt;-- Example Input:&lt;/span&gt;
    &lt;span class="c1"&gt;--   SUPPLIER&lt;/span&gt;
    &lt;span class="c1"&gt;--   INSURANCE&lt;/span&gt;
    &lt;span class="c1"&gt;--   PUBLIC SECTOR COMPANIES&lt;/span&gt;
    &lt;span class="c1"&gt;--   INTERCOMPANY&lt;/span&gt;
    &lt;span class="c1"&gt;--&lt;/span&gt;
    &lt;span class="c1"&gt;-- Example Output:&lt;/span&gt;
    &lt;span class="c1"&gt;--   SUPPLIER&lt;/span&gt;
    &lt;span class="c1"&gt;--   INSURANCE&lt;/span&gt;
    &lt;span class="c1"&gt;--   PUBLIC SECTOR COMPANIES&lt;/span&gt;
    &lt;span class="c1"&gt;--   INTERCOMPANY&lt;/span&gt;
    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="n"&gt;l_supplier_filter&lt;/span&gt; &lt;span class="o"&gt;:=&lt;/span&gt; &lt;span class="n"&gt;Supplier_type&lt;/span&gt;&lt;span class="p"&gt;(:&lt;/span&gt;&lt;span class="n"&gt;P_VENDOR_TYPE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="c1"&gt;-- Open the cursor and return the result set to BI Publisher.&lt;/span&gt;
    &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
    &lt;span class="k"&gt;OPEN&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="n"&gt;xdo_cursor&lt;/span&gt; &lt;span class="kr"&gt;FOR&lt;/span&gt;

        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="c1"&gt;-- Retrieve supplier information from Oracle Fusion Procurement&lt;/span&gt;
        &lt;span class="c1"&gt;-- Supplier View (POZ_SUPPLIERS_V).&lt;/span&gt;
        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="kr"&gt;SELECT&lt;/span&gt;
               &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
               &lt;span class="c1"&gt;-- Supplier Name&lt;/span&gt;
               &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
               &lt;span class="n"&gt;vendor_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

               &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
               &lt;span class="c1"&gt;-- Supplier Type&lt;/span&gt;
               &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
               &lt;span class="n"&gt;vendor_type_lookup_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

               &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
               &lt;span class="c1"&gt;-- Organization Type&lt;/span&gt;
               &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
               &lt;span class="n"&gt;organization_type_lookup_code&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

               &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
               &lt;span class="c1"&gt;-- Business Relationship&lt;/span&gt;
               &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
               &lt;span class="n"&gt;business_relationship&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

               &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
               &lt;span class="c1"&gt;-- Display the selected parameter value in the report output.&lt;/span&gt;
               &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
               &lt;span class="n"&gt;l_supplier_filter&lt;/span&gt; &lt;span class="n"&gt;supplier_type&lt;/span&gt;

        &lt;span class="kr"&gt;FROM&lt;/span&gt;   &lt;span class="n"&gt;poz_suppliers_v&lt;/span&gt;

        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="c1"&gt;-- Filter suppliers based on the selected Vendor Type parameter.&lt;/span&gt;
        &lt;span class="c1"&gt;--&lt;/span&gt;
        &lt;span class="c1"&gt;-- Example:&lt;/span&gt;
        &lt;span class="c1"&gt;-- If P_VENDOR_TYPE = 'INSURANCE'&lt;/span&gt;
        &lt;span class="c1"&gt;-- Then the query becomes:&lt;/span&gt;
        &lt;span class="c1"&gt;--&lt;/span&gt;
        &lt;span class="c1"&gt;-- WHERE vendor_type_lookup_code = 'INSURANCE'&lt;/span&gt;
        &lt;span class="c1"&gt;----------------------------------------------------------------------------&lt;/span&gt;
        &lt;span class="kr"&gt;WHERE&lt;/span&gt;  &lt;span class="n"&gt;vendor_type_lookup_code&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;l_supplier_filter&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;/p&gt;

&lt;h2&gt;
  
  
  Create Data model in Fusion
&lt;/h2&gt;

&lt;p&gt;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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnw2m9r7r64uhti1919ah.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnw2m9r7r64uhti1919ah.png" alt=" " width="800" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;&lt;strong&gt;Preview the data by passing parameters value.&lt;/strong&gt;&lt;/em&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzud4p3ob94ylqyfrr1w1.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzud4p3ob94ylqyfrr1w1.png" alt=" " width="611" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Save sample data &amp;amp; move to create a report &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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpyn8em49h68t0rosdqlx.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpyn8em49h68t0rosdqlx.png" alt=" " width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;This PL/SQL-based BI Publisher Data Set demonstrates how Oracle Fusion report developers can combine report parameters, custom functions, and cursor-based queries to create dynamic reports. &lt;/p&gt;

&lt;p&gt;By processing the user-selected supplier type through a PL/SQL function and applying it to the query filter, the report becomes more flexible, maintainable, and aligned with business requirements.&lt;/p&gt;

&lt;p&gt;This technique is especially useful in Procurement reporting scenarios where supplier classifications drive reporting outcomes.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Real-Time Reporting: How to Push ATP Data to Oracle Fusion BI Publisher</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Sun, 19 Jul 2026 02:51:45 +0000</pubDate>
      <link>https://dev.to/naveen6735/real-time-reporting-how-to-push-atp-data-to-oracle-fusion-bi-publisher-1m38</link>
      <guid>https://dev.to/naveen6735/real-time-reporting-how-to-push-atp-data-to-oracle-fusion-bi-publisher-1m38</guid>
      <description>&lt;p&gt;Most Oracle Fusion implementations follow a standard pattern: transferring data from Fusion Applications into &lt;strong&gt;Oracle Autonomous Transaction Processing (ATP)&lt;/strong&gt; for analytics&lt;/p&gt;

&lt;p&gt;&lt;em&gt;But what happens when you need to go the other way ?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In this project, I designed a solution for a common business pain point: fetching processed data from ATP, generating a dynamic BI Publisher report, and distributing it via &lt;strong&gt;Oracle Integration Cloud (OIC)&lt;/strong&gt; notifications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Business Challenge&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Organizations store massive volumes of processed data in ATP—everything from billing records to custom integration staging tables. While ATP is great for storage, business users need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Professional, formatted report templates.&lt;/li&gt;
&lt;li&gt;Automated, scheduled delivery.&lt;/li&gt;
&lt;li&gt;Rich HTML email notifications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Our solution automates this entire flow, removing manual effort and custom scripting.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution Architecture&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The flow moves from data storage to user delivery in a seamless loop:&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs107fktcb387rhl5lax7.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fs107fktcb387rhl5lax7.png" alt=" " width="583" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technologies Used&lt;/strong&gt;&lt;br&gt;
Oracle Technology Purpose &lt;strong&gt;Oracle ATP&lt;/strong&gt; Source Data Repository &lt;strong&gt;OIC&lt;/strong&gt; Orchestration Layer &lt;strong&gt;Fusion BI Publisher&lt;/strong&gt; Report Design &amp;amp; Execution &lt;strong&gt;SOAP Services&lt;/strong&gt; Remote Report Execution &lt;strong&gt;OCI&lt;/strong&gt; Hosting Platform&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementation Steps&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;We start with a Scheduled Integration. This removes human dependency and allows for daily, weekly, or custom business intervals.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0e3sjk8vf7yiuatn5yc9.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0e3sjk8vf7yiuatn5yc9.png" alt=" " width="800" height="503"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Connect to ATP and Execute SQL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using the ATP Adapter, we establish a secure connection to fetch the "Active" records.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4t9znsiu2icat458ibnp.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4t9znsiu2icat458ibnp.png" alt=" " width="800" height="270"&gt;&lt;/a&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;emp&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Step 2.1: ATP Data to Stage File in OIC&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here we used stage file action in OIC to write the ATP data into a file, which further we mapped to SOAP services as content.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftxkqhhrm6uo2xknzdcc9.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftxkqhhrm6uo2xknzdcc9.png" alt=" " width="800" height="286"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  Click to see Loaded &lt;em&gt;&lt;strong&gt;sample xml file in the stage file&lt;/strong&gt;&lt;/em&gt;
  &lt;br&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;root&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;row&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;EMPNO&amp;gt;&lt;/span&gt;7839&lt;span class="nt"&gt;&amp;lt;/EMPNO&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;ENAME&amp;gt;&lt;/span&gt;KING&lt;span class="nt"&gt;&amp;lt;/ENAME&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;JOB&amp;gt;&lt;/span&gt;PRESIDENT&lt;span class="nt"&gt;&amp;lt;/JOB&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;MGR/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;HIREDATE&amp;gt;&lt;/span&gt;1981-11-17T00:00:00.000+00:00&lt;span class="nt"&gt;&amp;lt;/HIREDATE&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;SAL&amp;gt;&lt;/span&gt;5000&lt;span class="nt"&gt;&amp;lt;/SAL&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;COMM/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;DEPTNO&amp;gt;&lt;/span&gt;10&lt;span class="nt"&gt;&amp;lt;/DEPTNO&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/row&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;row&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;EMPNO&amp;gt;&lt;/span&gt;7698&lt;span class="nt"&gt;&amp;lt;/EMPNO&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;ENAME&amp;gt;&lt;/span&gt;BLAKE&lt;span class="nt"&gt;&amp;lt;/ENAME&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;JOB&amp;gt;&lt;/span&gt;MANAGER&lt;span class="nt"&gt;&amp;lt;/JOB&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;MGR&amp;gt;&lt;/span&gt;7839&lt;span class="nt"&gt;&amp;lt;/MGR&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;HIREDATE&amp;gt;&lt;/span&gt;1981-05-01T00:00:00.000+00:00&lt;span class="nt"&gt;&amp;lt;/HIREDATE&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;SAL&amp;gt;&lt;/span&gt;2850&lt;span class="nt"&gt;&amp;lt;/SAL&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;COMM/&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;DEPTNO&amp;gt;&lt;/span&gt;30&lt;span class="nt"&gt;&amp;lt;/DEPTNO&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;/row&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/root&amp;gt;&lt;/span&gt;

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

&lt;/div&gt;




&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here the mapping reference of stage writes from ATP&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsw5zdig0yi23kdqpivj7.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsw5zdig0yi23kdqpivj7.png" alt="mapping reference" width="799" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Build Fusion BI Publisher Data Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The incoming ATP data is structured into an XML format. This serves as the data source for our report.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  Click to see &lt;em&gt;&lt;strong&gt;Magic in the Fusion&lt;/strong&gt;&lt;/em&gt;
  &lt;p&gt;&lt;strong&gt;Create Data model with the XML FILE&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fole4xwzfb4cttbeuyfp3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fole4xwzfb4cttbeuyfp3.png" alt=" " width="799" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Loaded the same sample XML File which we used earlier&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fatl58kiegu1br76jtz6k.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fatl58kiegu1br76jtz6k.png" alt=" " width="800" height="419"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Preview Data &amp;amp; save as Sample Data&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg43arpyf95vaib2k6i9l.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg43arpyf95vaib2k6i9l.png" alt=" " width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Don't forgot save it in folders.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create report based on above 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F82vai4a7k2thi9h5p4i4.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F82vai4a7k2thi9h5p4i4.png" alt=" " width="799" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Keep the report path with you&lt;/em&gt;&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Execute Fusion Run Report SOAP Service&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the core of the integration. OIC invokes the &lt;strong&gt;runReport()&lt;/strong&gt;&lt;br&gt;
operation via the BI Publisher SOAP service.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Below is the mapper reference!!&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frebvmpydb0da1fdixw6t.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Frebvmpydb0da1fdixw6t.png" alt=" " width="799" height="324"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  &lt;br&gt;
&lt;strong&gt;Key Insight:&lt;/strong&gt; The SOAP service is highly flexible. It accepts the XML data, applies your RTF/Excel template, and generates the output in your choice of format (PDF, Excel, CSV).&lt;br&gt;

&lt;/div&gt;



&lt;p&gt;&lt;/p&gt;
  Click to see &lt;em&gt;&lt;strong&gt;How reportBytes converts to DecodeBase64&lt;/strong&gt;&lt;/em&gt;
  &lt;p&gt;&lt;strong&gt;Using assignment, I converted to DecodeBase64&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgqp13g6jpz8yhzii0wa3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgqp13g6jpz8yhzii0wa3.png" alt=" " width="800" height="311"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Send OIC HTML Notification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Finally, we use the OIC Notification Action to deliver the report.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1buozvvjzcmmq9t6z7if.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1buozvvjzcmmq9t6z7if.png" alt=" " width="800" height="299"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
  Click to see &lt;em&gt;&lt;strong&gt;Sample Email Template:&lt;/strong&gt;&lt;/em&gt;
  &lt;p&gt;&lt;strong&gt;Sample Email Template:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Hi Nj&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Generate excel file using BIP report&lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;
DB data - XML Data Model fusion - report xlsx&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;{bfy}&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;Best Regards,&lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;Naveen Jejji&lt;span class="nt"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;OIC Dev&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;


&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"logo"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src =&lt;/span&gt;&lt;span class="s"&gt;"https://osidigital.com/wp-content/uploads/2018/08/osi_logo_rgb.png"&lt;/span&gt; &lt;span class="na"&gt;alt=&lt;/span&gt;&lt;span class="s"&gt;"company logo"&lt;/span&gt;
&lt;span class="na"&gt;width =&lt;/span&gt;&lt;span class="s"&gt;"250"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;




&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Innovation: Flipping the Script&lt;/strong&gt;&lt;/p&gt;


&lt;div class="crayons-card c-embed"&gt;

  

&lt;p&gt;The Paradigm Shift&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Traditional: Fusion → ATP (Data Archiving)&lt;/li&gt;
&lt;li&gt;Our Approach: ATP → Fusion BI Publisher → OIC (Dynamic Reporting) 

&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;



&lt;p&gt;This leverages ATP as the "Source of Truth" while utilizing Fusion’s powerful formatting engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Measurable Outcomes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Metric Improvement &lt;strong&gt;Manual Effort&lt;/strong&gt; Reduced by 90% &lt;strong&gt;Delivery Time&lt;/strong&gt; Hours to Minutes &lt;strong&gt;Automation&lt;/strong&gt; 100% Automated&lt;/p&gt;

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

&lt;p&gt;This project demonstrates that the Oracle ecosystem is most powerful when its components work in a "reverse" architecture. &lt;/p&gt;

&lt;p&gt;By moving data from ATP back into the Fusion reporting engine, we provide users with the professional outputs they need without manual intervention.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I’d love to hear your thoughts:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Have you implemented a similar "reverse" integration? What challenges did you face with the SOAP service limits? Let's discuss in the comments!&lt;/p&gt;

</description>
      <category>oracle</category>
      <category>oic</category>
      <category>analytics</category>
      <category>ace</category>
    </item>
    <item>
      <title>Automating Customer Termination Lifecycle Using Oracle Integration Cloud, ATP, and Oracle Service Cloud</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Sat, 04 Jul 2026 16:29:34 +0000</pubDate>
      <link>https://dev.to/naveen6735/automating-customer-termination-lifecycle-using-oracle-integration-cloud-atp-and-oracle-service-321k</link>
      <guid>https://dev.to/naveen6735/automating-customer-termination-lifecycle-using-oracle-integration-cloud-atp-and-oracle-service-321k</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;I built an automated customer termination framework using Oracle Fusion Cloud, OIC, ATP, and Oracle Service Cloud. &lt;/p&gt;

&lt;p&gt;It synchronizes termination data across systems, eliminating manual delays, billing errors and operational overhead while ensuring consistent customer lifecycle management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution Architecture
&lt;/h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmuuz3rcev59pjrjl1pb4.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmuuz3rcev59pjrjl1pb4.png" alt="A flowchart showing data synchronization between Oracle Fusion, OIC, ATP, and Oracle Service Cloud." width="799" height="338"&gt;&lt;/a&gt;&lt;/p&gt;
The automated lifecycle flow



&lt;h2&gt;
  
  
  Integration Flow
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;br&gt;
Customer termination information is identified in Oracle Fusion.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; Fusion → BIP report with “last run” parameter → OIC → ATP → Service Cloud.
&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqjik8nxongny4ihdmalp.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqjik8nxongny4ihdmalp.png" alt="SaaS to PaaS" width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;
Fusion → BIP report with “last run” parameter → OIC 



&lt;p&gt;&lt;strong&gt;A Quick Business Validation&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;The integration invokes Oracle Service Cloud APIs.&lt;/em&gt;&lt;br&gt;
I added to check whether customer is available in RightNow or Not using RESTAPI&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpexvbdiwdsi4p7uv3wrl.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpexvbdiwdsi4p7uv3wrl.png" alt=" " width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;
SerachCustomers in RightNow



&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;br&gt;
Based on above response, we used switch in OIC -To handle creation &amp;amp; update of customer in &lt;em&gt;&lt;strong&gt;RightNow(Oracle Service Cloud (RightNow) invoke)&lt;/strong&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fge8mwtc1rsx9cssao6kl.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fge8mwtc1rsx9cssao6kl.png" alt="RightNow" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;
Oracle Service Cloud (RightNow) invoke


&lt;h2&gt;
  
  
  Business Value Delivered
&lt;/h2&gt;

&lt;p&gt;The solution successfully delivered:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Automated customer termination processing&lt;/li&gt;
&lt;li&gt; Improved synchronization between Oracle Fusion and Oracle Service Cloud&lt;/li&gt;
&lt;li&gt; Reduced billing risk&lt;/li&gt;
&lt;li&gt; Strong audit capabilities&lt;/li&gt;
&lt;li&gt; Better support visibility&lt;/li&gt;
&lt;li&gt; Enterprise-grade scalability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
By leveraging Oracle Integration Cloud, ATP, and Oracle Service Cloud, we successfully automated the customer termination lifecycle and eliminated several manual operational challenges.&lt;/p&gt;

&lt;p&gt;The solution demonstrates how Oracle's cloud platform can be used to build reliable, scalable, and business-critical integrations that improve efficiency while maintaining data integrity across enterprise applications.&lt;/p&gt;

</description>
      <category>api</category>
      <category>oracle</category>
      <category>rightnow</category>
      <category>oic</category>
    </item>
    <item>
      <title>Stop Using Q! Use Finder for Faster Oracle OIC REST Integrations</title>
      <dc:creator>Naveen</dc:creator>
      <pubDate>Sun, 14 Jun 2026 16:36:19 +0000</pubDate>
      <link>https://dev.to/naveen6735/stop-using-q-use-finder-for-faster-oracle-oic-rest-integrations-mh2</link>
      <guid>https://dev.to/naveen6735/stop-using-q-use-finder-for-faster-oracle-oic-rest-integrations-mh2</guid>
      <description>&lt;p&gt;Learn how to use the &lt;strong&gt;Finder parameter&lt;/strong&gt; in Oracle Fusion REST APIs &lt;em&gt;instead of Q&lt;/em&gt; for better performance, cleaner OIC mappings, and optimized integrations.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;While Finder works instantly in Postman, OIC requires it to be constructed as a single parameter using XPath expressions, that’s where most developers struggle&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In OIC, integrating with Oracle Fusion Various REST APIs is a common requirement for extracting and processing business data. One of the key decisions developers face is &lt;strong&gt;how to filter data efficiently&lt;/strong&gt; using query parameters.&lt;/p&gt;

&lt;p&gt;Most developers are familiar with the &lt;strong&gt;q parameter&lt;/strong&gt;, but Oracle also provides a powerful alternative &lt;strong&gt;the finder option&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What is finder in Oracle Fusion REST APIs?&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
The &lt;strong&gt;finder parameter&lt;/strong&gt; is a predefined query mechanism provided by Oracle Fusion REST APIs to retrieve data using &lt;strong&gt;named queries and bind parameters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Eg:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight properties"&gt;&lt;code&gt;&lt;span class="err"&gt;...?&lt;/span&gt;&lt;span class="py"&gt;finder&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;findPurchaseOrderSchedules;&lt;/span&gt;
&lt;span class="py"&gt;bindPONumber&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;AE01-P001531;&lt;/span&gt;
&lt;span class="py"&gt;bindPOItemNumber&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;664-8455&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It behaves like &lt;em&gt;parameterized SQL queries (bind variables)&lt;/em&gt;, improving performance and readability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What is q Parameter?&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
The q parameter is used to &lt;em&gt;apply dynamic filters similar to a SQL WHERE clause&lt;/em&gt;&lt;br&gt;
Eg:&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="p"&gt;...&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;&lt;span class="n"&gt;q&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;PONumber&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'AE01-P001531'&lt;/span&gt; &lt;span class="k"&gt;and&lt;/span&gt; &lt;span class="n"&gt;POItemNumber&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'664-8455'&lt;/span&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Flexible but less structured&lt;/li&gt;
&lt;li&gt;Can lead to complex expressions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;&lt;u&gt;let's Walk into OIC......!&lt;/u&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Make sure you have required REST connections.&lt;/li&gt;
&lt;li&gt;Create Application based Integration with &lt;strong&gt;POST method&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&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%2Fvmf3t3vi3d24jwsho501.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%2Fvmf3t3vi3d24jwsho501.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;The below fields are we need to pass for another REST API.&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%2Fno8f48ypxmdqmjvi2q5k.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%2Fno8f48ypxmdqmjvi2q5k.png" alt=" " width="713" height="717"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Call &lt;u&gt;Get Method&lt;/u&gt; with &lt;strong&gt;finder&lt;/strong&gt; using rest call.
Below reference, which we will call
&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%2Fckwczv1wkypq1kjnjq9p.png" alt=" " width="800" height="360"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Add Finder as review parameter for the endpoint&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%2F33xirpiqjoxgyj2tcdq5.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%2F33xirpiqjoxgyj2tcdq5.png" alt=" " width="728" height="729"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now we will map to finder respectively 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%2Fvdt6691hmm2ci64bwore.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%2Fvdt6691hmm2ci64bwore.png" alt=" " width="799" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;End flow 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%2Fspgb9vkt3rom4fnwugbp.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%2Fspgb9vkt3rom4fnwugbp.png" alt=" " width="800" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;TESTING&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%2F2qjprxc956cj4d3c9rf1.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%2F2qjprxc956cj4d3c9rf1.png" alt=" " width="799" height="299"&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%2F7y2aeh67lbdpgi9rl3q6.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%2F7y2aeh67lbdpgi9rl3q6.png" alt=" " width="799" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <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="799" 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>
  </channel>
</rss>
