🚀 Deploy RUM JS for SAP
Deploy GermainUX RUM JS to monitor the availability, performance, user experience, and business processes of browser-based SAP applications.
RUM JS supports real-user monitoring and Session Replay for compatible SAP web interfaces, including SAP Fiori and SAPUI5 applications, when the script can execute in the required browser context.
🔍 What RUM JS monitors
RUM JS can capture:
|
Item |
|---|
|
User sessions |
|
Session Replay |
|
Fiori and SAPUI5 navigation |
|
Pages and logical application views |
|
User clicks and interactions |
|
Customer-perceived response time |
|
Network and resource requests |
|
Browser and JavaScript errors |
|
Unhandled promise rejections |
|
Browser freezes |
|
Rage clicks and dead clicks |
|
Business-process steps |
|
User feedback |
|
Heatmaps |
|
Browser, device, and network context |
Session Replay reconstructs the user experience from captured browser events. It is not a video recording.
💻 Supported SAP interfaces
RUM JS can monitor compatible browser-based interfaces such as:
|
Interface |
|---|
|
SAP Fiori launchpad |
|
SAP Fiori applications |
|
SAPUI5 applications |
|
SAP Web GUI |
|
Custom SAP web applications |
|
Browser-based SAP portals |
|
SAP applications embedded in another monitored portal |
The exact coverage depends on:
|
Factor |
|---|
|
Where RUM JS is loaded |
|
Same-origin and cross-origin boundaries |
|
Frames and embedded applications |
|
SAP security policies |
|
Content Security Policy |
|
Browser security |
|
User consent |
|
The ability to execute code in the application’s root context |
RUM JS does not monitor native SAP GUI desktop activity. Native Windows applications require an appropriate Windows monitoring component.
🎯 Choose the deployment scope
Before installing RUM JS, determine whether you need to monitor:
|
Scope |
|---|
|
One SAP application |
|
Multiple Fiori applications |
|
The entire Fiori launchpad |
|
An SAP application embedded in a corporate portal |
|
Production and non-production systems |
|
Multiple SAP hostnames or regions |
🔑 Root-context deployment
To monitor the complete Fiori launchpad and activity across its applications, RUM JS should execute in the highest accessible application context.
If the script is deployed only inside one isolated component, it may capture only that component rather than the entire user experience.
|
Deployment location |
Expected coverage |
|---|---|
|
Fiori launchpad shell or root document |
Launchpad and accessible application activity |
|
Individual SAPUI5 application |
That application only |
|
Parent portal |
Parent portal and same-origin accessible content |
|
Same-origin iframe |
Potentially accessible from the parent, depending on configuration |
|
Cross-origin iframe |
Must normally be monitored separately |
|
Browser extension |
Can provide root-page deployment where direct modification is unavailable, subject to policy and browser security |
Do not assume that a script inside an embedded application can access its parent shell. Browser same-origin restrictions still apply.
📋 Prerequisites
Before deployment, confirm:
|
Requirement |
|---|
|
GermainUX Cloud or on-premise is available. |
|
The SAP application URLs are known. |
|
You have access to Germain Workspace. |
|
The required SAP or web-server changes are approved. |
|
The browser can reach the GermainUX environment. |
|
Content Security Policy can be updated when required. |
|
Privacy, consent, masking, and retention requirements are defined. |
|
Production and non-production environments can be distinguished. |
|
A test account and representative workflow are available. |
Coordinate the deployment with SAP application owners, web administrators, security teams, and privacy teams.
⚙️ Create the SAP monitoring profile
Go to:
Germain Workspace > Settings > Wizards
Steps to create the profile:
-
Select SAP.
-
Enter the application name.
-
Enter the SAP application URL.
-
Enter or select the environment.
-
Configure the available privacy and monitoring options.
-
Review the wizard summary.
-
Follow the generated installation instructions.
Use meaningful names such as:
SAP Fiori - Production
SAP Fiori - QA
SAP Procurement - Production
SAP Employee Portal - Production
Avoid using the same application and environment values for unrelated SAP systems.
📂 Reopen the installation instructions
You can return to the generated deployment instructions at any time:
-
Go to Germain Workspace > Analytics > UX Monitoring Profiles.
-
Select the SAP monitoring profile.
-
Open Installation in the configuration editor.
Depending on the GermainUX version, UX Monitoring Profiles may appear under Settings > Analytics.
Use the script and configuration generated by the wizard for your GermainUX environment rather than copying a loader from an unrelated application profile.
🔧 Choose an installation method
🔗 Direct application deployment
Use direct deployment when you control the SAP web application or shell.
Potential locations include:
|
Location |
|---|
|
Fiori launchpad customization |
|
Approved SAP shell extension |
|
Custom SAPUI5 bootstrap or application shell |
|
Web-server template |
|
Parent portal |
|
Reverse-proxy response injection |
The exact method depends on the SAP product and architecture. Follow SAP-supported customization practices and avoid modifying vendor-managed files that can be overwritten during an upgrade.
🏗️ SAP Fiori launchpad deployment
For broad Fiori coverage, deploy RUM JS through an approved mechanism that loads it in the launchpad shell.
Validate that:
-
The loader executes once.
-
It executes early enough to observe navigation.
-
It remains available across client-side route changes.
-
It can access the required same-origin application content.
-
It does not interfere with SAPUI5 initialization.
-
It remains installed after an SAP upgrade.
If individual Fiori applications run in inaccessible cross-origin frames, they may require separate deployment.
🧩 Individual SAPUI5 application
Use application-level deployment when:
-
Only one application is in scope.
-
The launchpad shell cannot be modified.
-
The application runs independently.
-
Component-level coverage is sufficient.
This method may not capture launchpad navigation, other applications, or parent-shell activity.
⚙️ Tag manager or reverse proxy
An approved tag manager or reverse proxy can be used when it reliably injects RUM JS into the required document.
Validate:
-
Injection occurs on every intended page.
-
Content Security Policy permits the script.
-
The script loads only once.
-
Authentication redirects are handled correctly.
-
Error and fallback pages are covered when required.
-
Caching does not serve an incorrect GermainUX configuration.
🧩 GermainUX browser extension
Use a managed GermainUX RUM browser extension when the SAP root page cannot be modified and organizational browser policies permit extension deployment.
This can be appropriate for:
-
Vendor-managed SAP pages
-
Root documents outside your control
-
Controlled employee browsers
-
Diagnostic or phased deployments
Deploy the extension through the organization’s approved browser-management platform. Restrict it to the intended SAP URLs.
🛡️ Configure Content Security Policy
The SAP application must permit the browser to load RUM JS and send monitoring data to GermainUX.
Review directives such as:
|
Directive |
|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Use the minimum required GermainUX origins generated for the deployment.
Do not broadly weaken Content Security Policy with unrestricted wildcards merely to make monitoring work. Test the exact policy in non-production first.
🔗 Configure application and URL matching
In the SAP UX monitoring profile, configure:
|
Setting |
|---|
|
Primary hostname |
|
Alternate hostnames |
|
Launchpad path |
|
SAP application paths |
|
Load-balanced URLs |
|
Authentication redirects |
|
Locale-specific routes |
|
Embedded applications |
|
Production and non-production exclusions |
🔁 Normalize dynamic URLs
Remove or normalize values that would fragment the same logical page:
|
Parameter |
|---|
|
Session identifiers |
|
User identifiers |
|
Business-document identifiers |
|
Transaction tokens |
|
Locale prefixes |
|
Cache-busting parameters |
|
Dynamic object identifiers |
|
Tracking parameters |
Retain approved values as separate dimensions only when they are needed for analysis.
🔄 Configure SAP single-page navigation
Fiori and SAPUI5 applications frequently change views without performing a full browser page load.
Configure logical navigation so GermainUX recognizes:
-
Fiori application launch
-
Tile selection
-
Hash-route changes
-
View transitions
-
Tab changes
-
Object-page navigation
-
Dialog-based workflows
-
Navigation between embedded applications
-
Return to the launchpad
Use stable, business-oriented page names such as:
Fiori Launchpad
Purchase Requisition List
Create Purchase Requisition
Sales Order Search
Sales Order Details
Invoice Approval
Employee Profile
Avoid using raw routes containing dynamic identifiers as the displayed page name.
👥 Configure user identification
Where permitted, associate the SAP session with approved user context.
Potential attributes include:
|
Attribute |
|---|
|
SAP username |
|
User role |
|
Department |
|
Business unit |
|
Location |
|
Application role |
|
Organization |
|
Language |
Use stable identifiers and apply privacy rules.
Do not collect:
|
Prohibited |
|---|
|
Passwords |
|
Authentication tokens |
|
Session cookies |
|
Security answers |
|
Unnecessary personal information |
🔒 Authentication transitions
Confirm that RUM JS:
-
Starts after authentication when appropriate
-
Maintains the intended session across redirects
-
Handles single sign-on correctly
-
Ends or updates the session at logout
-
Does not capture authentication credentials
-
Does not create duplicate sessions during silent token renewal
🎥 Configure Session Replay
Enable Session Replay in the SAP UX monitoring profile when detailed reconstruction is required.
Configure:
|
Replay setting |
|---|
|
Replay enablement |
|
Sampling |
|
Maximum duration |
|
Text masking |
|
Input masking |
|
Element exclusion |
|
Page exclusion |
|
Resource capture |
|
Network capture |
|
Consent |
|
Retention |
Recommended exclusions
Review and protect SAP pages containing:
|
Sensitive content |
|---|
|
Employee information |
|
Customer information |
|
Financial information |
|
Health information |
|
Procurement details |
|
Payroll information |
|
Authentication data |
|
Confidential business documents |
|
Free-text notes |
|
Attachments |
Prefer excluding an unnecessary sensitive field over capturing it and depending only on downstream access restrictions.
🐛 Configure error monitoring
Enable relevant browser error sources:
-
JavaScript exceptions
-
Unhandled promise rejections
-
Resource errors
-
Failed HTTP or fetch requests
-
Timeouts
-
Application messages
-
Browser console events
-
Custom SAP application events
Keep these classifications separate:
|
Classification |
Meaning |
|---|---|
|
User-facing application error |
SAP fails to operate correctly, and the failure is visible to the user |
|
Silent application error |
SAP fails without displaying the failure to the user |
|
User validation |
SAP correctly prevents invalid user input or action |
|
Business-process failure |
The technical operation may finish, but the required business outcome is not achieved |
Do not count normal SAP validation as a software failure.
📡 Configure network monitoring
Capture browser requests associated with:
|
Request type |
|---|
|
OData |
|
REST |
|
SOAP |
|
SAPUI5 resources |
|
Application services |
|
Authentication |
|
Integrations |
|
Third-party services |
Configure:
-
URL normalization
-
Request naming
-
Success criteria
-
Timeouts
-
Error categorization
-
Header exclusion
-
Request- and response-body exclusion
-
Correlation attributes
Do not collect authorization headers, cookies, authentication tokens, or unrestricted business payloads.
📈 Configure business-process monitoring
Define critical SAP workflows, such as:
|
Workflow |
|---|
|
Purchase requisition creation |
|
Purchase-order approval |
|
Sales-order lookup or creation |
|
Invoice approval |
|
Expense submission |
|
Employee self-service |
|
Material lookup |
|
Inventory transfer |
|
Vendor onboarding |
|
Customer maintenance |
For each process, define:
-
Start condition
-
Completion condition
-
Required and optional steps
-
Failure conditions
-
Abandonment timeout
-
Expected duration
-
Relevant user and business dimensions
-
Application and environment
GermainUX can then identify process duration, step delay, abandonment, repeated actions, errors, overruns, and lost productivity.
💬 Configure user feedback
Where appropriate, enable the GermainUX feedback popup to collect contextual feedback from SAP users.
Feedback can be correlated with:
-
User session
-
Current SAP application
-
Business-process step
-
Error
-
Performance
-
Browser and device
-
Session Replay
Avoid displaying feedback prompts on sensitive pages or where the popup could obstruct a critical SAP action.
💾 Deploy to non-production first
Before production deployment:
-
Create a non-production SAP profile.
-
Install RUM JS in the test environment.
-
Validate login and navigation.
-
Test representative Fiori applications.
-
Verify pages, clicks, and requests.
-
Trigger safe validation and error scenarios.
-
Review Session Replay.
-
Validate privacy masking.
-
Measure browser overhead.
-
Confirm that the installation survives application navigation and reload.
Promote the same reviewed configuration to production, changing only the required application, environment, and URL values.
✅ Validate the production deployment
🔎 Loader validation
Using browser developer tools, confirm that:
-
The GermainUX loader is requested.
-
It returns successfully.
-
No Content Security Policy error blocks it.
-
It loads only once.
-
The browser sends monitoring data to the intended GermainUX environment.
-
Authentication and proxy infrastructure do not block it.
▶️ Session validation
Perform a representative SAP journey:
-
Sign in.
-
Open the Fiori launchpad.
-
Launch an application.
-
Navigate between views.
-
Perform several user actions.
-
Generate an approved validation message.
-
Complete or abandon a test process.
-
Sign out.
Then confirm that GermainUX contains:
-
One correctly identified session
-
Logical application and page names
-
User clicks
-
Network requests
-
Expected validation
-
Any intentional test error
-
Business-process steps
-
Session Replay, when enabled
🔐 Privacy validation
Review the captured data directly and confirm that:
-
Password fields are absent.
-
Authentication values are absent.
-
Sensitive text is masked.
-
Sensitive inputs are masked.
-
URLs do not contain protected identifiers.
-
Request and response bodies follow the configured policy.
-
Excluded pages and elements are not captured.
-
Access permissions are correct.
📊 Monitor browser overhead
After rollout, monitor:
-
Script load time
-
Browser CPU
-
Browser memory
-
Network volume
-
Event volume
-
Session Replay volume
-
Page and interaction responsiveness
If overhead or volume is higher than expected, adjust:
-
Session sampling
-
Replay sampling
-
Event collection
-
Mouse and input capture
-
Network-body capture
-
Resource collection
-
Maximum session duration
-
User or application scope
🗺️ Rollout strategy
Use a phased deployment:
-
SAP development or QA
-
Internal support and QA users
-
Limited production group
-
One business unit or region
-
Broader production rollout
At each stage, validate:
-
Technical stability
-
Privacy
-
Data quality
-
User identification
-
Storage volume
-
Browser overhead
-
Dashboard usefulness
🚑 Troubleshooting
👀 No SAP sessions appear
Confirm that:
-
The generated RUM script is installed.
-
The SAP URL matches the profile.
-
The application name and environment are correct.
-
The browser can reach GermainUX.
-
Content Security Policy permits the loader and ingestion endpoints.
-
Consent allows collection.
-
The script executes in the intended document.
-
Ad blockers or enterprise security tools do not block it.
1️⃣ Only one Fiori application is monitored
RUM JS may be installed only inside that application. Deploy it in the launchpad shell or another approved root context when broader coverage is required.
Applications in inaccessible cross-origin frames require separate deployment.
📄 Navigation appears as one long page
Configure SAP single-page navigation and hash-route detection. A full browser page load is not required when the user changes Fiori applications or views.
🔁 Sessions are duplicated
Check whether RUM JS is loaded through multiple mechanisms:
-
Fiori shell
-
Individual SAPUI5 application
-
Tag manager
-
Reverse proxy
-
Browser extension
-
Parent portal
Retain one authoritative deployment per accessible browser context.
🎞️ Session Replay is incomplete
Review:
-
Replay sampling
-
Consent
-
Page exclusions
-
Element exclusions
-
Cross-origin frames
-
Shadow DOM or dynamically rendered controls
-
Resource access
-
Maximum session duration
-
Navigation between independent SAP origins
🏷️ SAP controls are unnamed
Configure application-specific extraction rules using stable SAPUI5 attributes, accessibility labels, control metadata, or business labels.
Avoid depending only on generated DOM identifiers.
✂️ Network requests are fragmented
Normalize dynamic paths, session identifiers, document identifiers, and query parameters. Assign business-oriented request names.
⛔ Authentication data appears in URLs
Configure immediate URL sanitization and stop production collection until the protected values are removed from stored telemetry.
🗑️ Uninstall or disable RUM JS
To stop collection:
-
Disable the SAP UX monitoring profile or its RUM collection.
-
Remove the loader from the SAP shell, application, proxy, tag manager, or extension policy.
-
Clear relevant caches.
-
Open a new browser session.
-
Confirm that the RUM loader no longer loads.
-
Confirm that new SAP sessions are no longer created.
Retain the configuration when a temporary suspension is preferred over permanent removal.
📖 Related documentation
|
Document |
Link |
|---|---|
|
Deploy Monitoring for SAP |
https://docs.germainux.com/main/deploy-monitoring-for-sap?utm_source=chatgpt.com |
|
Engine Deployment for SAP |
https://docs.germainux.com/main/engine-deployment-for-sap?utm_source=chatgpt.com |
|
JS Profiler Deployment for SAP |
https://docs.germainux.com/main/js-profiler-deployment-for-sap?utm_source=chatgpt.com |
|
RPA Bot Recorder Deployment for SAP |
https://docs.germainux.com/main/rpa-bot-recorder-deployment-for-sap?utm_source=chatgpt.com |
|
Configure Monitoring for SAP |
https://docs.germainux.com/main/configure-monitoring-for-sap |
|
KPIs for SAP |
|
|
GermainUX RUM JS |
ℹ️ Get More Information
GermainUX can help determine which monitoring, analytics and automation capabilities are appropriate for your Salesforce Experience Cloud environment.
Component:RUM JS
Feature Availability: 2022.1 or later