Skip to content

CID Software Solutions LTD

Home » Overcome Application Composer CRM/ERP ViewObject Domain Restrictions Using Web Services REST Connection

Overcome Application Composer CRM/ERP ViewObject Domain Restrictions Using Web Services REST Connection

Business Challenge

Oracle Fusion Application Composer separates business objects into two distinct domains: CRM and ERP.
While implementing Groovy business logic within one domain, developers can typically use the built-in newView function
to query both standard and custom objects — but this access is restricted to the current domain.

For example:

  • CRM domain can access Accounts, Contacts, Subscriptions
  • ERP domain can access Installed Base Assets, Quality Issues

This becomes problematic when logic in one domain (e.g., CRM Subscriptions) needs data from another domain (e.g., ERP Install Base Assets).

Our Solution

At CID Software Solutions, we designed a clean and scalable workaround using a custom REST Web Service connection to bridge the domains.

Introducing the LocalFscmRest Web Service

We create a Web Service connection in Application Composer using the internal, P2T-safe URL:

https://fa-internal.oracleoutsourcing.com:10663/fscmRestApi/resources/latest/##REL_URL##

This allows Groovy logic in the CRM domain to call REST endpoints from ERP/SCM modules, such as:

  • /installedBaseAssets
  • /qualityIssues

Advantages of This Pattern

  • ✅ Seamless cross-domain data access
  • ✅ Fully supported using Fusion-native internal URL
  • ✅ Avoids the 500-record limit of ViewObjects via ?limit and ?offset query parameters
  • ✅ P2T-safe: no need to reconfigure after environment cloning
  • ✅ Single connection definition can support multiple patterns: GET, POST, DE:LETE

Sample Groovy Code: Accessing ERP ItemsV2 Endpoint from CRM Domain

def conn = adf.webServices.LocalFscmREST
def httpHeaders=['Rest-Framework-Version':'9'];
conn.requestHTTPHeaders=httpHeaders;

def organizationId = String.valueOf(OrganizationId_c)
def itemNumber = String.valueOf(ItemNumber_c)

// Getting item id
def itemResponse = conn.GET("itemsV2?fields=ItemId&limit=1&q=OrganizationId=" + organizationId + " AND ItemNumber = '" + itemNumber + "'")
if (!itemResponse.items.size()) throw new oracle.jbo.ValidationException("Item not found. Organization Id=" + organizationId + ", Item Number: " + ItemNumber_c)
def itemId = itemResponse.items[0].ItemId

Outcome

This pattern empowers developers to implement richer, domain-spanning business logic without workarounds or external integration platforms.
It is a powerful addition to any Oracle Fusion SaaS customization strategy.

CID Software Solutions specializes in elegant solutions for real-world Fusion challenges. Reach out to us to see how we can help.

Leave a Reply

Your email address will not be published. Required fields are marked *