Introduction

Oracle Fusion Applications represent one of the most comprehensive enterprise SaaS solutions, supporting critical business functions across Human Capital Management (HCM), Enterprise Resource Planning (ERP), Supply Chain Management (SCM), and Customer Experience (CX). As organizations increasingly rely on Fusion Cloud Apps for mission-critical operations, understanding the real user experience becomes paramount for ensuring optimal performance, identifying bottlenecks, and maintaining user satisfaction.

Oracle Cloud Infrastructure (OCI) Application Performance Monitoring (APM) Real User Monitoring (RUM) Browser Agent provides a powerful solution for gaining deep visibility into how users interact with Fusion Cloud Applications. By deploying the APM Browser Agent, organizations can monitor real user sessions, track page performance, analyze user behavior patterns, and correlate performance metrics with business outcomes—all from the browser perspective.

This blog post provides a comprehensive guide to implementing OCI APM RUM Browser Agent for Oracle Fusion SaaS Cloud Apps, covering both ADF (Application Development Framework) and Redwood page implementations, and exploring key use cases that enable data-driven performance optimization.

Reference Architecture: OCI APM Real User Monitoring for Oracle Fusion SaaS Cloud Apps

OCI APM Real User Monitoring captures user interaction data directly from the browser, providing comprehensive insights into the actual user experience. The APM Browser Agent records:

  • Page Load Performance: Complete page load times, resource loading, and rendering metrics
  • User Interactions: Clicks, navigation patterns, and user session flows
  • AJAX Calls: API call performance and error rates
  • JavaScript Errors: Client-side errors that impact user experience
  • Geographic Data: User location-based performance analysis
  • Device Information: Browser, device type, and connection characteristics
  • Application Performance Index (Apdex): Standardized performance scoring

The APM Browser Agent sends browser spans and RUM metrics to OCI APM, where they can be visualized in Trace Explorer and Metrics Explorer, enabling comprehensive analysis of user experience across Fusion Cloud Applications. Beyond deep-dive analysis, this telemetry allows you to utilize out-of-the-box RUM Dashboards and define Custom Metrics to detect and alert on Fusion environment performance issues proactively.

Figure 1: OCI APM Real User Monitoring for Oracle Fusion SaaS Cloud Apps
Figure 1: OCI APM Real User Monitoring for Oracle Fusion SaaS Cloud Apps

Prerequisites

Before implementing APM RUM for Fusion Cloud Apps, ensure you have:

  • OCI APM Domain: An active APM domain in your OCI tenancy
    • Follow these quick steps to create a domain:
      • Sign in to the Oracle Cloud Infrastructure console.
      • Open the navigation menu, click Observability & Management, and under Application Performance Monitoring, click Administration.
      • Select your target compartment, click Create APM Domain, and fill in the required details (Name, Compartment, Description, etc.).
      • Click Create APM domain and wait for the domain to be provisioned.
    • For full setup details, see Create an APM Domain.
  • APM Data Key: The public data key from your APM domain
    • Navigate to APM Domain > Resources > Data Keys
    • Copy the Public Data Key
  • Data Upload Endpoint: The OCI data upload endpoint URL for your APM domain
    • Format: https://<domain-id>.apm-agt.<region>.oci.oraclecloud.com
    • Found in APM Domain > Administration > Data Upload Endpoint
    • Copy the Data Upload Endpoint
    • Figure 2: OCI APM Data Key and Data Upload Endpoint
  • ADF Sandbox Access: Ability to create and publish sandboxes in Fusion Applications
  • Redwood Visual Builder Studio project access: Ability to create and publish VBCS project for Fusion Redwood pages.
    • Note: The Fusion role alone does not grant access to VB Studio — the user also needs a VB Studio role in the Identity Domain.
    • If role synchronization is enabled (the common case), assign one of:
      • ORA_SYNC_ENABLED_ADMINISTRATOR_ABSTRACT — maps to VB Studio Administrator
      • ORA_SYNC_ENABLED_DEVELOPER_ABSTRACT — maps to VB Studio Developer (These are assigned in the Fusion Security Console and auto-sync to the Identity Domain.)
    • If role synchronization is disabled, you must manually assign in the Identity Domain console:
      • DEVELOPER_ADMINISTRATOR — VB Studio admin access (create projects, manage settings)
      • DEVELOPER_USER — VB Studio developer access (create/develop projects).

Implementation: Deploying APM Browser Agent

Oracle Fusion Applications consist of two distinct page architectures, each requiring a specific implementation approach:

  • ADF Pages: Legacy pages identified by /faces/ in the URL
  • Redwood Pages: Modern pages identified by /redwood/ in the URL

For complete coverage, you must implement the APM Browser Agent for both page types.

Part 1: Adding RUM Agent to Fusion ADF Pages

ADF pages use a global page template that can be customized to include the APM Browser Agent across all ADF pages in your Fusion instance.

Step 1: Access Global Page Template Editor

  1. Log in to your Fusion Cloud Application
  2. Navigate to Settings > Actions > Edit Global Page Template
    • Figure 3: Edit Global Page Template
  3. Create or activate a sandbox:
    • Click Activate a Sandbox
    • Figure 4: Activate a Sandbox
    • Select Page Template Composer option
    • Click Create and Enter
    • Enter the sandbox by clicking on its name
    • Figure 5: Create Sandbox

Step 2: Edit the Template

  1. Click Edit Global Page Template from the menu (now that you’re in a sandbox)
    •  Figure 6: Edit Global Page Template
  2. Ensure the page is in Design mode
    • When active, you’ll see a bar with ‘Add content’ | ‘Select’ | ‘Structure’
    • Figure 7: Design Mode
  3. Select Structure from that bar
  4. Click the “+” symbol at the bottom to add a new HTML markup component
    • Figure 8: Add Component
  5. Select Component and click Add to add the HTML Markup, then Close the popup
    • Figure 9: Add Component
    • Figure 10: Add Component 
  6. Switch to Add Content tab and click the gear setting button of the HTML Markup component
  7. Open the Expression by clicking the settings icon
    • Figure 11: Open Expression 
  8. Click Expression Builder
    • Figure 12: Expression Builder 

Step 3: Add APM Browser Agent Script

In the Expression Builder, add the following HTML markup:

<!-- APM RUM Library -->
<!-- Note: static.oracle.com requires maintenance to update the version -->
<!-- Alternative: Use region-specific script if needed -->
<script type="text/javascript" crossorigin="anonymous" src="https://static.oracle.com/cdn/apm/oci/1.1/1.1-1xx/1.1-139/apmrum.fus.base.combi.min.js"></script>

<script type="text/javascript">
function initializeAPMRumConf() {
  const apmRumConfig = document.apmrum || window.apmrum || (document.apmrum = {});
  apmRumConfig.custEP = apmRumConfig.custEP || {};
  
  /* CUSTOMER SPECIFIC VALUES */
  apmRumConfig.custEP.OracleAPMPublicDataKey = 'YOUR_PUBLIC_DATA_KEY';
  apmRumConfig.custEP.ociDataUploadEndpoint = 'https://YOUR_DOMAIN_ID.apm-agt.us-phoenix-1.oci.oraclecloud.com';
  apmRumConfig.custEP.serviceName = 'Fusion';
  apmRumConfig.custEP.webApplication = 'ADF-Page';
  apmRumConfig.traceSupportingEndpoints = apmRumConfig.traceSupportingEndpoints || [
    { headers: [], hostPattern: '.*' }
  ];
  
  /* Uncomment the line below to get username values in plain text (by default the value will be hashed) */
  apmRumConfig.custEP.trackPlainUserId = true;
  
  /* END OF CUSTOMER SPECIFIC SETTINGS */
  apmRumConfig.confInst = (apmRumConfig.confInst || new Set()).add('custEP');
}
initializeAPMRumConf();
</script>

Configuration Notes:

  • Replace YOUR_PUBLIC_DATA_KEY with your APM domain’s public data key
  • Replace YOUR_DOMAIN_ID.apm-agt.us-phoenix-1.oci.oraclecloud.com with your actual data upload endpoint
  • Adjust the region in the endpoint URL to match your APM domain region
  • The webApplication value is set to 'ADF-Page' to identify ADF pages in APM

User ID Hashing:

  • By default, APM hashes user IDs to protect privacy
  • To track plain text user IDs (for debugging), uncomment: apmRumConfig.custEP.trackPlainUserId = true;
  • Warning: Only enable plain text user IDs if required for troubleshooting and ensure compliance with privacy regulations

Personally Identifiable Information (PII):

Step 4: Publish the Changes

  1. Click Apply or Save to close the popup
  2. Click Publish
  3. Click Yes in the confirmation dialog
    • Figure 13: Publish

The APM Browser Agent is now deployed to all ADF pages in your Fusion instance.

Part 2: Adding RUM Agent to Fusion Redwood Pages

Redwood pages require a different approach using Visual Builder Studio to modify the PageModule template, which applies to all Redwood pages.

Step 1: Access Visual Builder Studio

  1. Navigate to any Redwood page in your Fusion application
    • For example, nativate to Me -> Journeys or any Redwood pages that you know
    • Figure 13: Redwood Page 
  2. Click the Profile icon in the top-right corner
  3. Select Edit the Page in Visual Builder Studio
    • Figure 14: Edit Page in Visual Builder Studio 
    • Figure 15: Git Repository

Note: The first time you access this option, Fusion will automatically create a Git repository for your Oracle Application or App Extension project. This is a one-time activity.

Step 2: Navigate to PageModule

  1. The project (Git repository) will open showing the page template
    • Figure 16: Page Template 
  2. Click the tab Advanced
    • Figure 17: Advanced Tab 
  3. Locate the unified module section (this is the relevant area for applying changes across all Redwood pages)
    • Figure 18: Unified Module 
  4. Find the Javascript area
    • Figure 19: Javascript

The default PageModule template typically looks like:

define([], () => {
  'use strict';
  class PageModule {
  }
  return PageModule;
});

Step 3: Replace PageModule with APM Configuration

Replace the default PageModule code with the following:

define([], () => {
  'use strict';
  
  function initializeAPMRumConf() {
    // eslint-disable-next-line no-restricted-syntax
    const apmRumConfig = document.apmrum || window.apmrum || (document.apmrum = {});
    apmRumConfig.custEP = apmRumConfig.custEP || {};
    
    /* CUSTOMER SPECIFIC VALUES */
    apmRumConfig.custEP.OracleAPMPublicDataKey = 'YOUR_PUBLIC_DATA_KEY';
    apmRumConfig.custEP.ociDataUploadEndpoint = 'https://YOUR_DOMAIN_ID.apm-agt.us-phoenix-1.oci.oraclecloud.com';
    apmRumConfig.custEP.serviceName = 'Fusion';
    apmRumConfig.custEP.webApplication = 'RedwoodPage';
    apmRumConfig.traceSupportingEndpoints = apmRumConfig.traceSupportingEndpoints || [
      { headers: [], hostPattern: '.*' }
    ];
    
    // Uncomment the line below to get username values in plain text (by default the value will be hashed)
    apmRumConfig.custEP.trackPlainUserId = true;
    
    /* END OF CUSTOMER SPECIFIC SETTINGS */
    apmRumConfig.confInst = (apmRumConfig.confInst || new Set()).add('custEP');
  }
  
  function initializeAPMRumLib() {
    const apmRumScript = document.createElement("script");
    apmRumScript.crossOrigin = 'anonymous';
    apmRumScript.type = "text/javascript";
    
    /* Use one location for apmrum library */
    /* static.oracle.com requires maintenance (to update the version) */
    /* The region-specific script might need update to content-security-policy header */
    apmRumScript.src = "https://static.oracle.com/cdn/apm/oci/1.1/1.1-1xx/1.1-139/apmrum.fus.base.combi.min.js";
    
    /* Alternative: Use region-specific script (recommended to match APM domain region) */
    /* Example for eu-paris-1 region: */
    /* apmRumScript.src = "https://ingest-rum.apm-agt.eu-paris-1.oci.oraclecloud.com/static/jslib/apmrum.fus.base.combi.min.js"; */
    
    document.head.appendChild(apmRumScript);
  }
  
  class PageModule {
    constructor() {
      initializeAPMRumLib();
      initializeAPMRumConf();
    }
  }
  
  return PageModule;
});

Configuration Notes:

  • Replace YOUR_PUBLIC_DATA_KEY with your APM domain’s public data key
  • Replace YOUR_DOMAIN_ID.apm-agt.us-phoenix-1.oci.oraclecloud.com with your actual data upload endpoint
  • The webApplication value is set to 'RedwoodPage' to identify Redwood pages in APM
  • Consider using the region-specific script URL if it matches your APM domain region

Step 4: Save and Deploy

  1. Save the changes in Visual Builder Studio
  2. Click Publish to deploy the changes to all Redwood pages
    • Figure 20: Publish 

Part 3: Configure APM Domain Enrichment Rules

For complete Fusion coverage, enable the Oracle-provided Fusion (FUS) span rule to add Fusion-specific attributes and dimensions to your traces.

Enable Fusion Enrichment Rule

  1. Navigate to your OCI APM Domain
  2. Go to Administration > Span Rules
  3. Click Create Span Enrichment
    • Figure 21: Create Span Enrichment 
  4. Select Oracle Provided span rules
  5. Find and add the “FUS” rule
    • Figure 22: Add Span Enrichment Rule 

This enrichment rule creates the following Fusion-specific attributes:

  • RwApplication: Identifies the Redwood application
  • RwPath: Captures the Redwood page path
  • RwContainer: Identifies the Redwood container
  • FusFamily: Describes the Fusion area where activity occurred (e.g., HCM, ERP, SCM, CX)

These attributes enable powerful filtering and analysis capabilities in APM Trace Explorer and Metrics Explorer.

Part 4: Verify Application Performance Monitoring Browser Agent Deployment

To generate some monitoring data and verify the setup, use the application you are configuring:

  • Generate Data: Use the application you are setting up the monitoring for to generate initial monitoring data.
  • View in APM: Go to the APM Trace explorer page to see the data loaded. For example, see APM screenshots below.
  • Track user names in plain text: The user-name dimension is collected and hashed by default. If you want to have the user name in plain text, uncomment the relevant line in the example code: apmRumConfig.custEP.trackPlainUserId = true;

If needed, verify that the APM data upload url (window.apmrum.ociDataUploadEndpoint) is reachable by doing the following:

  • Go to your application and use the Developer Tools in your browser to go to the Developer console. In most browsers, you can start the Developer Console by pressing the F12 key.
  • Select the Network tab and filter the URL list by observations/public-span, if required.
  • The Collector URL should be displayed with the 200 or 204 HTTP response code. If you do not see a 200 or 204 HTTP response code, then the browser is not able to access the Collector URL.
  • Figure 23: Fusion Monitoring APM Network Tab 

Utilize the APM Real User Monitoring Dashboard to monitor user behavior and application performance

OCI Application Performance Monitoring provides an out-of-the-box Real User Monitoring (RUM) Dashboard that offers immediate, high-level visibility into your Fusion Cloud Apps performance without requiring any custom queries.

To access the RUM Dashboard:

  1. Navigate to Observability & Management in the Oracle Cloud Console.
  2. Navigate to Application Performance Monitoring, and click Real User Monitoring.
  3. Use the global filters at the top to select your compartment, APM domain, Web Application and the desired time frame.

The RUM Dashboard visualizes critical performance metrics across several key dimensions automatically:

  • Apdex Score: Monitor the overall satisfaction of your users in a single aggregate performance score.
  • Page Performance: Track the exact, real-world time it takes for your Redwood and ADF pages to render for users.
  • Page Views & Sessions: View user engagement trends and active sessions over time to understand peak traffic periods.
  • Geographic Breakdown: Visually analyze which regions and countries your users are connecting from, and identify location-specific performance latency.
  • Client & Browser Breakdown: Understand the device types, operating systems, and browsers your users depend on to access Fusion.
  • Top Slowest Pages: Instantly pinpoint the specific Fusion pages currently exhibiting the poorest performance to prioritize code and network optimizations.

This built-in dashboard serves as an excellent starting point for everyday monitoring, performance reporting, and quickly diagnosing macro-level user experience issues without ever looking at the raw telemetry data.

Figure 23: Fusion Monitoring APM RUM Dashboard 

Gain additional insights from RUM Data

Once the APM Browser Agent is deployed and the Fusion span enrichment rules are configured, you can leverage the newly populated attributes (such as RwApplicationRwContainerRwPathFusFamilyFusProductCodeFusComponentType, etc.) to gain deeper, custom insights from your RUM data across various use cases:

Use Case 1: Fusion Cloud Apps Pages Clicks by User

Understand which Fusion pages users access most frequently and identify user navigation patterns.

For Redwood Pages:

show spans *  group by RwApplication,RwContainer,RwPath

Figure 24: Fusion Monitoring APM RUM Redwood Pages Analysis 

For ADF Pages:

show spans *  group by FusFamily,FusProductCode,FusComponentType,FusContextRoot,FusRegionId

Figure 25: Fusion Monitoring APM RUM ADF Pages Analysis 

Use Case 2: User Session Performance Profiling

Analyze the sequence of events and performance bottlenecks within individual user sessions.

show (traces) * where SessionId='<your_session_id>' order by TraceRootSpanStartTime asc

Figure 26: Fusion Monitoring APM RUM User Session Analysis 

Use Case 3: Comprehensive Application Usage and Engagement

Analyze user engagement across both ADF modules and Redwood pages by aggregating the number of unique sessions, users, and total pageviews for each application area, ordered by highest session volume.

SHOW traces  FusFamily ||'-'|| FusProduct as "baseDetails",RwApplication ||'-'|| RwContainer ||'-'||RwPath as RedwoodDetails, count_distinct(sessionId) as sessions, count_distinct(username) as users, sum(pageviews) as activities
   where RwApplication is not omitted or FusFamily is not omitted
   group by FusFamily ||'-'|| FusProduct,RwApplication ||'-'|| RwContainer ||'-'||RwPath
order by count_distinct(sessionId) desc

Figure 27: Fusion Monitoring APM RUM Application Usage Analysis 

APM Custom Metrics and Alarms

Beyond passively monitoring dashboards, you can configure OCI APM to proactively alert you when Fusion web pages exceed acceptable performance thresholds. This involves creating a Custom Metric to aggregate performance data based on specific criteria, and then configuring OCI Alarms.

Step 1: Create a Custom Metric

First, define a custom metric to continuously capture specific performance behavior, such as slow page loads.

  1. Navigate to your APM Domain > Resources > Custom metrics.
  2. Click Create custom metric.
  3. Enter a Metric name (e.g., SlowFusionRedwoodPages).
  4. In the Span filter box, configure the query to isolate the targeted behavior. For example:ServiceName = 'Fusion' and WebApplication = 'RedwoodPage'
  5. From the Metric value source dropdown list, select the numeric metric to capture (e.g., SpanDuration).Figure 28: Fusion Monitoring APM RUM Custom Metric Value Source
  6. (Optional) Select one or multiple Dimensions for fine-grained grouping (e.g., RwContainerRwApplicationFusFamily).Note: if you choose too many dimensions, the custom metric will be aggregated for each combination of dimensions, which may result in high cardinality which could potentially overload monitoring service. Please reduce the number of dimensions to avoid this issue. Figure 29: Custom Metric Large Volume Warning 
  7. Click Next to choose metric storage options.
  8. Choose your target Compartment and Namespace. The default namespace is oracle_apm_custom (note: using a non-default custom namespace requires configuring OCI identity policies).
  9. Click Create. APM will now periodically aggregate and push this custom metric to the OCI Monitoring service.Figure 30: Fusion Monitoring APM RUM Custom Metric 

Step 2: Configure an OCI Alarm

Finally, set up an alarm to notify your team when the custom metric breaches a threshold.

  1. In the Oracle Cloud Console, navigate to Observability & Management > Monitoring > Metrics Explorer.
  2. Select the compartment, metric namespace (oracle_apm_custom) and the custom metric name (e.g., SlowFusionRedwoodPages).
  3. Click Create Alarm.
  4. Provide Alarm Name, Alarm Summary, Metric Namespace(e.g., oracle_apm_custom), Metric Name(e.g., SlowFusionRedwoodPages), Interval(1 minute), Statistic(Mean).
  5. Define the Trigger Rule (e.g., trigger when the count > 1000 within a 1-minute interval).
  6. Under Destinations, select or create an OCI Notification Topic (e.g., Email, Slack/PagerDuty integration) to route the alert to your support team.
  7. Click Save Alarm.

Your team will now receive automated alerts whenever Fusion page performance degrades beyond your specified thresholds!

Conclusion

Implementing OCI APM Real User Monitoring for Oracle Fusion SaaS Cloud Apps provides organizations with comprehensive visibility into real user experience, enabling data-driven performance optimization and improved user satisfaction. By deploying the APM Browser Agent for both ADF and Redwood pages, organizations can:

  • Track User Behavior: Understand which pages users access and how they navigate through Fusion Apps
  • Profile Performance: Analyze individual user sessions to identify performance bottlenecks
  • Geographic Analysis: Understand how user location impacts application performance
  • Standardized Metrics: Use Apdex scores to measure and track overall application performance
  • Trend Analysis: Monitor performance over time to detect degradation and measure improvements
  • Device Profiling: Optimize application performance for different devices, browsers, and connection types

The implementation is straightforward, requiring only JavaScript configuration in Fusion’s page templates and enabling the Fusion enrichment rule in APM. Once deployed, the APM Browser Agent automatically collects comprehensive RUM data without requiring additional server-side agents.

By leveraging the insights provided by APM RUM, organizations can proactively identify and resolve performance issues, optimize user experience, and ensure that Fusion Cloud Apps deliver the performance and reliability that users expect.

References