🔧 Deploy the JS Profiler for SAP
Deploy the GermainUX JS Profiler when standard real-user monitoring identifies a browser-side SAP problem that requires deeper JavaScript, rendering, or network evidence.
The JS Profiler is intended primarily for selected support users, QA engineers, developers, and controlled diagnostic sessions. It is not required for standard SAP real-user monitoring or Session Replay.
🔍 What the JS Profiler monitors
The JS Profiler can provide advanced browser-side information about:
|
Item |
|---|
|
JavaScript execution |
|
Function and call-stack activity |
|
Long-running JavaScript operations |
|
Main-thread blocking |
|
Browser freezes |
|
Client-side errors |
|
Network requests |
|
Resource activity |
|
Browser performance |
|
SAPUI5 and other frontend-code behavior |
|
Third-party JavaScript |
📚 Important limitation: 📚 ABAP is not profiled by GermainUX
The JS Profiler does not directly profile ABAP or other server-side SAP code.
Use the GermainUX Engine with SAP APIs, logs, traces, database telemetry, or other server-side monitoring to analyze:
|
Area |
|---|
|
ABAP execution |
|
SAP application-server processing |
|
Database operations |
|
Backend integrations |
|
Server-side exceptions |
|
SAP job execution |
Where compatible identifiers are available, GermainUX can correlate browser-side JS Profiler data with Engine-collected backend telemetry.
🕐 When to deploy the JS Profiler
Use the JS Profiler when you need to investigate:
|
Issue |
|---|
|
Slow SAP screens or Fiori applications |
|
Browser freezes |
|
Long delays after a user action |
|
Excessive JavaScript execution |
|
Client-side rendering delays |
|
Repeated or failed network requests |
|
Errors that cannot be explained by standard RUM data |
|
Problems affecting only specific users, browsers, or devices |
|
Performance regressions after an SAPUI5 or frontend release |
|
Third-party scripts affecting SAP performance |
Begin with RUM JS to determine which users, pages, or processes are affected. Then enable profiling only for the relevant diagnostic scope.
⚙️ Deployment options
The available profiling method depends on browser support, security policy, and whether you control the SAP application’s response headers.
|
Method |
Recommended use |
Considerations |
|---|---|---|
|
JavaScript Self-Profiling API |
Application responses can include the required document policy |
No profiler extension required, but browser and policy support must be validated |
|
JS Profiler browser extension |
Selected users or managed enterprise browsers |
The browser may display a profiling notification |
|
Managed extension with approved browser launch option |
Controlled enterprise deployment where the notification must be suppressed |
Requires security review and managed browser configuration |
📋 Prerequisites
Before deployment, confirm:
|
Prerequisite |
|---|
|
RUM JS is deployed for the SAP application. |
|
The SAP UX monitoring profile exists. |
|
The affected application, pages, and users are known. |
|
The target browser is supported. |
|
The organization approves JavaScript profiling. |
|
Browser-extension deployment is permitted, if required. |
|
The browser can reach the GermainUX environment. |
|
Privacy and data-retention rules are configured. |
|
A rollback or disablement procedure is available. |
For enterprise deployment, coordinate with:
|
Team |
|---|
|
SAP application owners |
|
Browser-management administrators |
|
Information security |
|
Endpoint-management teams |
|
GermainUX administrators |
⬇️ Enable JavaScript profiling
Go to:
Germain Workspace > Analytics > UX Monitoring Profiles
1️⃣ Steps to enable
-
Select the profile used by the SAP application.
-
Open the configuration editor.
-
Select JavaScript Profiling Monitoring.
-
Enable profiling.
-
Select the appropriate profiling method.
-
Configure user, page, duration, and sampling restrictions.
-
Save the profile.
Depending on the GermainUX version, UX Monitoring Profiles may appear under Settings > Analytics.
1️⃣ Option 1: Use the JavaScript Self-Profiling API
Use this option when the target browser supports the API and you can configure the required response header on the monitored SAP pages.
🔧 Configure the response header
Add this response header to each page where profiling is permitted:
Document-Policy: js-profiling
The header must be present on the document response. Adding it through client-side JavaScript after the page loads does not grant the required document policy.
The exact SAP, proxy, or web-server configuration depends on the deployment architecture. Review header changes with the SAP and security teams.
⚙️ Enable the API in GermainUX
In the SAP UX monitoring profile:
-
Open JavaScript Profiling Monitoring.
-
Enable the self-profiling option.
-
Configure the profiling duration and sampling interval.
-
Restrict profiling to the intended users or sessions.
-
Save the configuration.
-
Reload the monitored SAP application.
✅ Validate the API deployment
Confirm that:
-
The document response contains
Document-Policy: js-profiling. -
The browser supports the JavaScript Self-Profiling API.
-
No policy violation appears in the browser console.
-
Profiling data reaches GermainUX.
-
Only the intended applications and users are profiled.
2️⃣ Option 2: Deploy the JS Profiler browser extension
Use the browser extension when the self-profiling API is unavailable or the required response header cannot be configured.
🛒 Install the extension
Follow the general GermainUX JS Profiler deployment procedure to:
-
Obtain the supported extension.
-
Install it in the target browser.
-
Approve the required permissions.
-
Configure the GermainUX hostname.
-
Apply the SAP application profile.
-
Restart the browser when required.
For enterprise deployment, use the organization’s approved browser-management mechanism.
🔔 Browser notification
As a browser security feature, the browser may display a notification while a page is being profiled.
If the user closes or cancels the notification, profiling can stop for the current page or tab. The user may need to open the SAP application in a new tab before profiling resumes.
Inform diagnostic users about:
-
Why the notification appears
-
Which sessions are being profiled
-
How long profiling will remain enabled
-
How to report or stop unexpected profiling
📋 Optional managed-browser configuration
The GermainUX documentation identifies this Chrome launch option for controlled deployments:
--silent-debugger-extension-api
When approved and supported, it can be added to the Chrome shortcut or managed launch configuration used by the diagnostic user.
Example target:
"C:\Program Files\Google\Chrome\Application\chrome.exe" --silent-debugger-extension-api
This browser option affects security-related behavior and must be reviewed by the organization’s endpoint and information-security teams before production deployment.
Browser behavior and support can change between Chrome versions. Validate the option with the exact managed browser version before rollout.
🎯 Target profiling
Do not profile every SAP user continuously unless there is a validated requirement and the environment has been sized accordingly.
👥 Target specific users
Use:
|
Setting |
|---|
|
|
|
|
Example:
settings.plugins.jsProfiling.includedUsernames = [
"sap-test-user-01",
"sap-support-user-01"
];
Or:
settings.plugins.jsProfiling.excludedUsernames = [
"restricted-user-01"
];
An undefined or empty list means no restriction for that setting.
Do not place passwords, tokens, or unnecessary personal information in these lists.
📄 Target specific SAP applications or pages
Restrict profiling by:
|
Scope |
|---|
|
Application |
|
Environment |
|
Hostname |
|
URL |
|
Fiori application |
|
Logical page |
|
User group |
|
Time period |
|
Diagnostic condition |
Use the smallest scope that can reproduce the issue.
⚙️ Advanced profiling settings
The available settings.plugins.jsProfiling settings include:
|
Setting |
Default |
Description |
|---|---|---|
|
|
|
Minimum number of function or stack hits required for inclusion |
|
|
|
Maximum number of samples retained by the Self-Profiling API |
|
|
|
Maximum profiling duration in seconds |
|
|
|
Starts profiling on the first page-ready event |
|
|
|
Target interval between samples in milliseconds |
|
|
|
Checks the Self-Profiling API before using the extension |
|
|
Undefined |
Profiles only the listed users |
|
|
Undefined |
Profiles all users except those listed |
Example:
settings.plugins.jsProfiling.maxProfileDuration = 30;
settings.plugins.jsProfiling.sampleIntervalMillis = 20;
settings.plugins.jsProfiling.maxSampleBufferSize = 1000;
settings.plugins.jsProfiling.profileOnPageReady = true;
settings.plugins.jsProfiling.useSelfProfilingAPI = true;
settings.plugins.jsProfiling.includedUsernames = [
"sap-diagnostic-user"
];
Add these settings before starting RUM JS:
germainApm.start(settings);
⚖️ Configuration tradeoffs
|
Change |
Effect |
|---|---|
|
Longer profiling duration |
Captures more activity but generates more data and overhead |
|
Shorter sample interval |
Increases detail but may increase overhead and data volume |
|
Larger sample buffer |
Retains more samples but consumes more browser memory |
|
Profiling all users |
Provides broader coverage but increases overhead, volume, and privacy exposure |
|
Profiling selected users |
Reduces impact and focuses diagnostics |
Begin with the default values and adjust only after reviewing the collected data and browser overhead.
🔒 Privacy and security
Profiling can reveal technical details about application execution and network activity.
Configure:
|
Control |
|---|
|
User targeting |
|
Page exclusions |
|
URL sanitization |
|
Network header exclusion |
|
Request and response-body exclusion |
|
Sensitive-data masking |
|
Data retention |
|
Role-based access |
|
Audit controls |
Do not capture:
|
Sensitive item |
|---|
|
Passwords |
|
Authentication tokens |
|
Session cookies |
|
Sensitive request headers |
|
Personal or business-confidential data |
|
Full request or response bodies unless explicitly approved |
The JS Profiler should not be used to bypass SAP, browser, or organizational security controls.
🔁 Reproduce and analyze an issue
Use a controlled reproduction procedure:
-
Identify the affected SAP application and user workflow.
-
Enable profiling for the selected diagnostic user.
-
Start a new browser session.
-
Open the SAP application.
-
Perform only the steps required to reproduce the issue.
-
Record the reproduction time.
-
Stop profiling or close the diagnostic session.
-
Open GermainUX.
-
Locate the corresponding user session.
-
Analyze the profiling data with pages, clicks, errors, and requests.
Review:
|
Metric |
|---|
|
Total JavaScript execution time |
|
Long-running functions |
|
Repeated function activity |
|
Main-thread blocking |
|
Network wait time |
|
Browser idle time |
|
Resource loading |
|
Error timing |
|
The action immediately preceding the problem |
|
Related SAP or integration requests |
🔗 Correlate with backend SAP telemetry
A slow SAP user action can include both browser and backend time.
Where supported, correlate:
-
User click or action
-
Browser JavaScript activity
-
Outbound request
-
SAP API or application-server activity
-
Log event
-
Database activity
-
Browser rendering and completion
Use the Engine for backend evidence. Do not infer that JavaScript is the root cause merely because the total user action was slow.
✅ Validate the deployment
Confirm that:
-
Profiling is enabled only for intended users or pages.
-
The extension or Self-Profiling API starts successfully.
-
The document policy is present when required.
-
Profiling data appears in GermainUX.
-
The data is associated with the correct SAP session.
-
JavaScript samples cover the reproduction period.
-
Network activity is correlated correctly.
-
No sensitive data is collected.
-
Browser overhead remains acceptable.
-
Profiling stops when disabled.
⛔ Disable JavaScript profiling
When diagnostics are complete:
-
Go to Germain Workspace > Analytics > UX Monitoring Profiles.
-
Select the SAP profile.
-
Open JavaScript Profiling Monitoring.
-
Disable profiling or remove the targeted users.
-
Save the configuration.
-
Remove the extension, response header, or managed browser option when it is no longer required.
-
Confirm that new profiling data is no longer collected.
Leaving profiling enabled indefinitely for a temporary diagnostic user can create unnecessary overhead and data volume.
🔧 Troubleshooting
No profiling data appears
Verify:
-
JavaScript profiling is enabled.
-
The user is included and not excluded.
-
The SAP URL matches the profile.
-
RUM JS loads successfully.
-
The extension is installed and active.
-
The browser supports the selected method.
-
The
Document-Policyheader is present for self-profiling. -
The browser can reach GermainUX.
-
Consent and privacy rules permit collection.
-
The session remained open long enough to create a profile.
⛔ Document-policy violation appears
Confirm that the page response includes:
Document-Policy: js-profiling
If the required header cannot be configured, disable useSelfProfilingAPI or deploy the supported browser extension.
ℹ️ Browser notification was dismissed
Open the SAP application in a new tab and reproduce the issue again. For managed deployments, review whether an approved enterprise configuration is appropriate.
📈 Profiling increases browser overhead
Reduce:
-
Profiling duration
-
Sample-buffer size
-
Number of targeted users
-
Number of targeted applications
-
Profiling frequency
You can also increase the sample interval, which reduces sample frequency.
⏳ Profile ends before the issue occurs
Increase maxProfileDuration cautiously or start profiling closer to the action being investigated.
📚 Related documentation
|
Document |
Link |
|---|---|
|
Deploy Monitoring for SAP |
|
|
Engine Deployment for SAP |
|
|
RPA Bot Recorder Deployment for SAP |
|
|
RUM JS Deployment for SAP |
|
|
Configure Monitoring for SAP |
|
|
KPIs for SAP |
|
|
GermainUX JS Profiler |
|
|
Configure Monitoring for JavaScript |
ℹ️ Get More Information
GermainUX can help determine which monitoring, analytics and automation capabilities are appropriate for your Salesforce Experience Cloud environment.
Component: JS Profiler
Feature Availability: 2022.1 or later