<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Extending Oracle SaaS with VBS]]></title><description><![CDATA[Extending Oracle SaaS with VBS]]></description><link>https://extending-oracle-saas-using-custom-objects.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sat, 05 Sep 2026 04:57:53 GMT</lastBuildDate><atom:link href="https://extending-oracle-saas-using-custom-objects.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[🔧 Extending Oracle SaaS: A Deep Dive into Custom Objects & Visual Builder in Oracle Fusion]]></title><description><![CDATA[As businesses evolve, the need to customize Oracle Fusion Applications—without disrupting standard upgrades—is more essential than ever. Fortunately, Oracle provides a powerful set of tools to achieve this: Custom Objects via Application Composer, an...]]></description><link>https://extending-oracle-saas-using-custom-objects.hashnode.dev/extending-oracle-saas-a-deep-dive-into-custom-objects-and-visual-builder-in-oracle-fusion</link><guid isPermaLink="true">https://extending-oracle-saas-using-custom-objects.hashnode.dev/extending-oracle-saas-a-deep-dive-into-custom-objects-and-visual-builder-in-oracle-fusion</guid><category><![CDATA[Custom Objects]]></category><category><![CDATA[Oracle VBCS]]></category><category><![CDATA[Oracle Fusion SaaS]]></category><category><![CDATA[ERP]]></category><category><![CDATA[Application Composer]]></category><dc:creator><![CDATA[Surya Koda]]></dc:creator><pubDate>Tue, 17 Jun 2025 01:06:45 GMT</pubDate><content:encoded><![CDATA[<p>As businesses evolve, the need to customize Oracle Fusion Applications—without disrupting standard upgrades—is more essential than ever. Fortunately, Oracle provides a powerful set of tools to achieve this: <strong>Custom Objects</strong> via <strong>Application Composer</strong>, and <strong>Oracle Visual Builder</strong> for low-code UI extensions.</p>
<p>In this post, we'll explore:</p>
<ul>
<li><p>What are Custom Objects in Oracle Fusion?</p>
</li>
<li><p>How to create them using Application Composer</p>
</li>
<li><p>Server-side scripting with Groovy</p>
</li>
<li><p>Design limitations and best practices</p>
</li>
<li><p>Extending SaaS with Visual Builder</p>
</li>
</ul>
<hr />
<h2 id="heading-what-are-custom-objects-in-oracle-fusion">📌 What are Custom Objects in Oracle Fusion?</h2>
<p><strong>Custom Objects</strong> are user-defined data entities that can be added to Oracle Fusion SaaS applications such as ERP, HCM, or CX. They allow you to:</p>
<ul>
<li><p>Store business-specific data</p>
</li>
<li><p>Model custom workflows and entities</p>
</li>
<li><p>Build relationships with standard or other custom objects</p>
</li>
<li><p>Create upgrade-safe, secure, and scalable extensions</p>
</li>
</ul>
<p>Custom Objects are fully supported by the platform and can be used in <strong>user interfaces, workflows, security configurations</strong>, and <strong>REST APIs</strong>.</p>
<hr />
<h2 id="heading-creating-custom-objects-using-application-composer">🛠️ Creating Custom Objects using Application Composer</h2>
<p>Oracle’s <strong>Application Composer</strong> is a built-in design tool for defining custom metadata and logic.</p>
<h3 id="heading-steps-to-create-a-custom-object">🔹 Steps to Create a Custom Object</h3>
<ol>
<li><p><strong>Navigate to Application Composer</strong></p>
<ul>
<li>From Oracle Fusion: go to <em>Navigator → Tools → Application Composer</em></li>
</ul>
</li>
<li><p><strong>Select Application Area</strong><br /> Choose the appropriate functional area (Sales, CRM, or Custom Application).</p>
</li>
<li><p><strong>Create a New Custom Object</strong></p>
<ul>
<li><p>Click “Create Custom Object”</p>
</li>
<li><p>Define singular and plural names</p>
</li>
<li><p>Choose whether it’s a top-level or child object</p>
</li>
</ul>
</li>
<li><p><strong>Add Fields</strong><br /> Supported types include:</p>
<ul>
<li><p>Text, Number, Date/Time</p>
</li>
<li><p>Picklists (static/dynamic)</p>
</li>
<li><p>Long Text, Boolean, Email, URL, and more</p>
</li>
</ul>
</li>
<li><p><strong>Define Relationships</strong></p>
<ul>
<li>One-to-Many or Many-to-Many with standard or custom objects</li>
</ul>
</li>
<li><p><strong>Configure Pages and Layouts</strong></p>
<ul>
<li><p>Control Create/Edit/View layouts</p>
</li>
<li><p>Assign fields and sections for user-friendly views</p>
</li>
</ul>
</li>
<li><p><strong>Set Role-Based Access</strong></p>
<ul>
<li>Define user access for create/read/update/delete operations</li>
</ul>
</li>
</ol>
<hr />
<h2 id="heading-server-scripts-groovy">⚙️ Server Scripts (Groovy)</h2>
<p>Custom Objects support <strong>Groovy server-side scripts</strong> to control behavior and automate business logic.</p>
<h3 id="heading-where-can-you-use-scripts">🔹 Where Can You Use Scripts?</h3>
<ul>
<li><p><strong>Object-level Triggers</strong>: Before/After Insert, Update, Delete</p>
</li>
<li><p><strong>Field-level Triggers</strong>: Logic when specific fields are changed</p>
</li>
<li><p><strong>Validation Rules</strong>: Enforce business conditions</p>
</li>
</ul>
<h3 id="heading-example-set-default-status">🔹 Example: Set Default Status</h3>
<pre><code class="lang-plaintext">groovyCopyEditif (isAttributeChanged('Status') &amp;&amp; Status == null) {
    Status = 'Pending'
}
</code></pre>
<p>Scripts can:</p>
<ul>
<li><p>Auto-populate fields</p>
</li>
<li><p>Trigger validations</p>
</li>
<li><p>Implement business rules without external integration</p>
</li>
</ul>
<hr />
<h2 id="heading-limitations-and-best-practices">🚫 Limitations and Best Practices</h2>
<p>While Custom Objects are flexible, there are <strong>important limits</strong> and best practices to follow:</p>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Constraint</td><td>Recommendation</td></tr>
</thead>
<tbody>
<tr>
<td>Field Limit</td><td>Keep under 250 fields per object for performance</td></tr>
<tr>
<td>Record Volume</td><td>Avoid storing more than 250,000 records per object</td></tr>
<tr>
<td>Relationships</td><td>Limit complex nested relationships for performance</td></tr>
<tr>
<td>Scripts</td><td>Only Groovy scripting; no JavaScript or client-side logic</td></tr>
<tr>
<td>API Exposure</td><td>Not exposed by default; needs REST configuration</td></tr>
<tr>
<td>Security</td><td>Must be explicitly defined; no inheritance from base objects</td></tr>
</tbody>
</table>
</div><hr />
<h2 id="heading-extending-saas-with-oracle-visual-builder">🌐 Extending SaaS with Oracle Visual Builder</h2>
<p>Once your custom object is created, you can build responsive, low-code apps using <strong>Oracle Visual Builder (VB)</strong>.</p>
<h3 id="heading-what-is-visual-builder">🔹 What is Visual Builder?</h3>
<p>A browser-based low-code platform that lets you build:</p>
<ul>
<li><p>Web apps</p>
</li>
<li><p>Mobile apps</p>
</li>
<li><p>Embedded SaaS extensions</p>
</li>
</ul>
<p>It supports REST-based integration, form creation, data display, role-based access, and custom business logic.</p>
<h3 id="heading-use-case-custom-workflow-app">🔹 Use Case: Custom Workflow App</h3>
<p>Let’s say you’ve created a <code>Project_Issues__c</code> custom object to track internal issues. Now, build a Visual Builder app to:</p>
<ul>
<li><p>Display issue records</p>
</li>
<li><p>Allow users to create/update them</p>
</li>
<li><p>Trigger notifications or escalations</p>
</li>
<li><p>Embed directly into ERP dashboard via Oracle Page Composer</p>
</li>
</ul>
<hr />
<h2 id="heading-how-to-integrate-visual-builder-with-custom-objects">🔗 How to Integrate Visual Builder with Custom Objects</h2>
<ol>
<li><p><strong>Expose Your Object via REST</strong></p>
<ul>
<li>Enable object sharing or integration through RESTful APIs</li>
</ul>
</li>
<li><p><strong>Open Visual Builder Studio</strong></p>
<ul>
<li>Create a new app or workspace</li>
</ul>
</li>
<li><p><strong>Connect to REST Service</strong></p>
<ul>
<li>Use VB’s service connection wizard to connect to your object’s REST endpoint</li>
</ul>
</li>
<li><p><strong>Design UI</strong></p>
<ul>
<li>Use drag-and-drop components to create forms, tables, and charts</li>
</ul>
</li>
<li><p><strong>Configure Logic</strong></p>
<ul>
<li>Use visual flows or JavaScript to implement custom behavior</li>
</ul>
</li>
<li><p><strong>Deploy &amp; Embed</strong></p>
<ul>
<li><p>Deploy your app to Oracle Cloud</p>
</li>
<li><p>Use Page Composer or Deep Linking to embed within Fusion SaaS</p>
</li>
</ul>
</li>
</ol>
<hr />
<h2 id="heading-real-life-use-case-example">✅ Real-Life Use Case Example</h2>
<p><strong>Problem</strong>: HR wants to manage <strong>employee recognitions</strong> within Oracle HCM, but there’s no built-in module.<br /><strong>Solution</strong>:</p>
<ul>
<li><p>Create a <code>Recognition__c</code> custom object</p>
</li>
<li><p>Add fields: Employee Name, Award Type, Date, Notes</p>
</li>
<li><p>Add scripts: Auto-set award date if empty</p>
</li>
<li><p>Build a VB App: List recognitions, filter by employee, allow HR to add/edit</p>
</li>
<li><p>Embed in HCM under Employee Self-Service</p>
</li>
</ul>
<p>Result? <strong>A fully integrated, modern feature — without compromising SaaS upgradeability.</strong></p>
<hr />
<h2 id="heading-final-thoughts">🎯 Final Thoughts</h2>
<p>Custom Objects in Oracle Fusion give you the power to extend core functionality securely and scalably. When combined with Oracle Visual Builder, you can:</p>
<p>✅ Deliver rich user experiences<br />✅ Model complex business processes<br />✅ Integrate seamlessly with Oracle SaaS<br />✅ Innovate without disrupting future upgrades</p>
<p>#OracleFusion #CustomObjects #VisualBuilder #OracleSaaS #LowCode #FusionApps #ApplicationComposer #OracleDeveloper #ERP #OracleCloud #SaaSExtensions</p>
]]></content:encoded></item></channel></rss>