Troubleshooting Oracle Scripting

Common Implementation Errors

This section includes the following topics:

Responsibility Names Can Differ

If you cannot locate a responsibility name as described in the Oracle Scripting Implementation Guide or other Oracle documentation, your environment may have been customized, or may be using a specific installation type. In some Oracle Applications environments, responsibility names differ based on installation choices. Oracle Applications can be installed in one of three configurations:

  1. If you cannot locate a responsibility name as described in the Oracle Scripting Implementation Guide or other Oracle documentation, your environment may have been customized, or may be using a specific installation type. In some Oracle Applications environments, responsibility names differ based on installation choices. Oracle Applications can be installed in one of three configurations:

  2. Test installation: installed for testing applications and database functionality.

  3. Production instance: installed for use in production in an enterprise.

Test and Production installations do not include the sample database.

For example, production instances use the name Scripting User for the responsibility to launch a script in the Scripting Engine agent interface in stand-alone mode. However, environments using the Vision installation call the same responsibility Scripting Agent, Vision Enterprises. In both environments, the responsibility key will be IES, and the responsibility ID may be identical.

For information on finding a responsibility ID, see Finding Application and Responsibility ID Values.

Survey Implementation Errors

This section includes the following topics:

General Implementation Errors

The responsibility for administering the Survey component of Oracle Scripting is known to Oracle Applications as Survey Administrator. Do not confuse the Survey Administrator responsibility (required for administering survey campaigns) with the iSurvey User responsibility (required for executing or scheduling concurrent programs).

When you are logged into Oracle Applications as a system administrator and are searching for responsibilities in Forms-based applications, it is recommended to search using the percent wildcard character, for example "%SURVEY%", because:

If You Cannot See the Survey Administration Console

If you cannot successfully view the Survey Administration console:

Troubleshooting Fulfillment Administrator Role Assignment

If You Cannot See Fulfillment Page

If you can successfully enter the Survey Administration console, but cannot view the Fulfillment page:

If you can successfully enter the Fulfillment tab, displaying a Fulfillment sub-tab and displaying the Master Document page, you have verified that:

Common Verification or Execution Errors 

This section includes the following topics:

Script Author Errors

This section includes the following topics:

Script Author Deployment Errors

Problem

Deploying a script to the database with the Author fails.

Solution 1

The tablespace for the IES_DEPLOYED_SCRIPTS table may not be large enough. Particularly indicative is the scenario in which previous scripts were deployed to the database without difficulty. To resolve, increase the size of the tablespace (usually named USER_DATA) to an appropriate size (based on database usage and other installed applications). Consult your database documentation for details.

Solution 2

Connection to the Oracle Applications database instance has failed because the database is down. Check with the database administrator.

Script Author Script Verification

When testing a script, it is not enough to ensure the script will launch in the appropriate interface (in the Java interface for agents, or in a Web browser for surveys). You must also test each path in the script to ensure all commands are functioning as expected. It is important to ensure each component is functioning on its own and in consonance with all others. From the standpoint of the script itself, one must test:

Scripting Engine Agent Interface Errors

This section includes the following topics:

Troubleshooting Applet Security and Signing

Problem

A yellow bar appears on the bottom of all Forms windows that reads Warning: Applet Window.

This is a security configuration issue. From a Scripting perspective, you cannot launch Scripts after logging into Forms-based applications.

Solution 1 (Client)

This may be an indication that the proper security certificate has not been installed on the client JInitiator. Improper security configuration on the client can lead to a variety of problems in Oracle Scripting. Among them, the ability to copy and paste to and from fields in Scripting will be disabled. Be sure to properly configure applet security on each client machine. First, empty your Oracle JInitiator cache and try logging in again. If the yellow bar reappears, uninstall and re-install Oracle JInitiator.

Solution 2 (Server)

This may be an indication that the Applications JAR files have not been signed properly on the server. For more details on proper security configuration, consult your Oracle Applications installation documentation.

Load Balancing Environments with Multiple Apache JServ Instances

Problem 1

While in the middle of running a script in the agent interface, users will occasionally (and seemingly randomly) receive errors indicating that their sessions have expired.

Note: This error message can also indicate a legitimate issue if the user has been idle for a long time. For more information, see Setting Session Idle Timeout Values for Apache JServ.

Problem 2

While in the middle of taking a survey, users will occasionally (and seemingly randomly) get a browser page with the error message "Incorrect URL" after clicking the Submit button on a survey page.

Cause

Oracle Scripting is a stateful application. As with all stateful HTTP applications on load-balanced Apache/JServ environments, the load balancer must be configured to route requests from one client to the same Apache/JServ for the duration of the session. Otherwise, the Scripting Engine will not be able to find the user session's state, and will fail, as described above. This behavior is applicable to Oracle Scripting releases 11.5.6 and later. This is applicable both for Scripting Engine implementations executing scripts in Oracle Forms (the agent interface) in the Apache mid-tier architecture, and for implementations for executing surveys in a Web browser (the Web interface). This information is not applicable to implementations executing scripts in the agent interface in the Caching Architecture.

Note that this issue is caused by incorrect load balancer configuration, not by Oracle Scripting.

Solution

Scripting Engine operations in the Apache mid-tier architecture for agent script and survey execution can be set in many different mid-tier configurations, ranging from a single Apache/JServ on a single mid-tier server to many mid-tier server machines, each running many Apache and JServ instances. In fact, it is this flexibility which allows Scripting to easily scale to handle a large number of concurrent users, simply by adding mid-tier server machines and Apache/JServ instances as necessary. In environments with multiple Apache/JServ instances spanning multiple mid-tier server machines, a load balancer must be used, so that requests to a single virtual URL can be appropriately distributed to a physical machine and an Apache/JServ on that machine. Load balancers can be either hardware or software components. There are a large variety of vendors who make such components. Because the Scripting Engine is a stateful application, there is a required implementation step when implementing Scripting in an environment with multiple, load-balanced Apache/JServ instances. When configured for only stateless HTTP applications (e.g. iStore), a load-balanced Apache/JServ environment can simply distribute each incoming client request to any Apache/JServ. With a stateful HTTP application like Scripting, the application must maintain individual user sessions and the state of each user session in Scripting is stored in the servlet session in the JServ. Thus, when the first client request is received to establish a Scripting user session, that request can be routed to any Apache/JServ. But each subsequent request for the same user must be routed to the same Apache/JServ as the first, or the application will not find the user session state, and the application will error out.

Load balancers have support for ensuring that client requests for stateful applications get routed to the same JServ. One vendor, Cisco Systems, refers to this as "stickiness." Regardless of the vendor of the load balancer, the implementor must ensure that a load-balanced environment running Scripting is configured to redirect client requests to the same JServ.

For more information on proper configuration of a load balancer, please consult with a networking professional familiar with your environment and your specific load balancer or refer to your vendor's load balancer documentation.

Session Timeout Issues

Problem

During an Oracle Scripting transaction in the agent interface, the following error message appears:

Error: Your Scripting transaction has expired due to inactivity. Please close the Scripting window and restart the script. Also, please contact your system administrator to increase the Apache JServ session idle timeout setting.

This requires the agent to close the Scripting Engine agent interface window, launch the script again, and recapture all information from the expired session.

Cause

In the Scripting Engine agent interface (when using the Apache mid-tier architecture only), the Scripting servlet runs in an Apache JServ. Every Apache JServ has a session idle timeout setting that controls how long a servlet session can be idle before it is automatically timed out (expired and terminated) by the Apache JServ. This behavior ensures that abandoned sessions in the servlet are not left to consume resources unnecessarily. When a servlet session is active in the JServ, but is idle (has received no client requests) for longer than the specified idle timeout setting, the JServ will automatically time out or expire the session.

Solution

The behavior exhibited by the application in the problem description above differs based on patch level. Regardless, all data from the expired session will be lost. Recovery requires ending the script manually by closing the window, and starting a new script session.

To avoid such problems, consider extending the session idle timeout setting. For more information, see the topic Setting Session Idle Timeout Values for Apache JServ in Oracle Scripting Implementation Guide.

Panel Text Errors

This section includes the following topics:

Cascading Style Sheet Information Ignored at Runtime

Problem

When taking a JTT-based survey, styles designated in a cascading style sheet included in panel text or JSP resources are ignored.

Cause

Neither the agent interface nor the Web interface of the Scripting Engine support the use of cascading style sheets (CSS) in panel layout HTML.

For executing scripts as surveys, any style sheet used in survey resources other than the default CSS specified in JTF properties will be ignored. The agent interface will ignore any style sheets referenced in panel layout HTML.

Solution

Format panel text using the panel layout editor. Alternatively, export panel text and generate formatting on a character or paragraph tag level rather than applying styles.

For JSP resources, use styles referenced in JTFUCSS.CSS only, or specify in JSP code the desired formatting on a character or paragraph tag level.

JavaScript Imported into Panel Text Ignored or Displaying Incorrectly

Problem:

At script runtime, JavaScript imported into panel text HTML is ignored or displays incorrectly.

Cause 1

The Scripting Engine agent interface does not support the use of JavaScript or JScripts.

Solution 1

Do not include JavaScript or JScript scripts in panel text HTML for any script intended to be executed in the Java-based agent interface.

Cause 2

The Scripting Engine Web interface uses the Web browser to interpret code. Oracle Applications 12-certified Web browsers such as Netscape Navigator and Microsoft Internet Explorer interpret JavaScript (and JScript) scripts differently.

Solution 2

The following solutions are recommended:

  1. Build JavaScript or JScript scripts carefully, using certified scripting language experts.

  2. To ensure compatibility with all browsers, it is recommended to include a savvy browser detection scheme in any scripts used, to supply appropriate rendering in JScript or JavaScript as required by the end user's browser client.

  3. Recognize that using scripts within customized panel content is customization. As with all custom code, such issues are not supported by Oracle.

  4. Many custom JavaScripts are required to be included within the <HEAD> and </HEAD> tags of any HTML page. Ensure the script is appropriately referenced in custom panel HTML.

  5. Microsoft FrontPage does not allow the inclusion of any content after the </HTML> tag. When editing panel text containing any embedded values, ensure that the HTML editor has not removed embedded value codes. One workaround is to create embedded values after otherwise customizing panel layout content.

Debug Statements Not Appearing from Custom Java Code

Problem

Prior to upgrading to the Apache mid-tier architecture, certain debug statements or messages appeared in the Java console that are no longer visible.

Cause

The JVM executing code is located on the Apache Web server whereas before the messages were "printed" to the client's Java console.

Solution

To view debugging messages in the Apache Mid-Tier architecture, change any Java code using "System.out.println" to "System.err.println". This will result in the messages being written to the jserv error logs.

Survey Deployment and Fulfillment Troubleshooting

The following are troubleshooting tips specifically regarding undelivered invitation or reminder master documents for list-based survey campaigns. Invitations and reminders are HTML master documents sent by Oracle One-to-One Fulfillment to invite a list member (or to remind an already invited list member) to participate in a survey campaign.

Background

When you click Deploy for a list-based survey deployment, a concurrent request is generated which is scheduled to run at the deploy date and time (specified when defining a deployment). The purpose of this concurrent program is to make a request to Oracle One-to-One Fulfillment to send out e-mail invitations to the target population specified by the list.

Upon selecting Deploy, the status of the deployment changes from "Open" to "Active." If the status of the corresponding parent objects (cycle and survey campaign) status were "Open," the status of each will change to "Active."

As soon as the page refreshes, the corresponding concurrent request ID is immediately visible in the Deployment Detail page. You can use this concurrent request ID to monitor the fulfillment request submission through the Oracle Forms-based interface associated with the iSurvey User responsibility.

When the request executes, either it will succeed or fail to complete.

If the request is successful, a fulfillment request ID is generated. This is visible from the Survey Administration console in the Deployment Detail screen, immediately above the concurrent request ID.

This request can be tracked using the Fulfillment tabs within the Survey Administration console, using this fulfillment request ID. If necessary, the same ID can be used by a fulfillment administrator, accessing the full functionality of Oracle One-to-One Fulfillment by logging into the Fulfillment Administration console.

Once a fulfillment request has been successfully submitted to Oracle One-to-One Fulfillment, there is no communication with the Survey Administration console regarding any possible problems in executing that fulfillment request. If necessary, obtain the fulfillment request ID from the Deployment Detail page of the Survey Administration console, and attempt to remediate using Oracle One-to-One Fulfillment debugging techniques.

Fulfillment Request Failure Signs

In Concurrent Manager, a fulfillment request that is not completed can be detected in the Request Detail form as Phase: Complete, Status: Error.

Additional information to help determine why a request failed may be visible by clicking View Log in the Request form.

In the Survey Administration console, when deploying a list-based survey, the status is set to "Active" upon a successful request to Concurrent Manager. However, if the status of the deployment changes back to "Open," this may indicate a failure to execute the fulfillment request.

Once a Fulfillment request has been successfully submitted to Oracle One-to-One Fulfillment, the Fulfillment Engine then needs to process it. Only successful processing by the Engine results in an e-mail message being sent out and the subsequent receipt of respondent data for a list-based survey campaign.

Query Failure

The Fulfillment Engine will fail if the query associated with the master document fails. Therefore, once a fulfillment request ID is generated, use Oracle One-to-One Fulfillment debugging methods to troubleshoot the failure point within Oracle One-to-One Fulfillment.

Troubleshooting Recommendations

Problem 1

You have successfully executed a concurrent program, and a Fulfillment request has been successfully submitted to Oracle One-to-One Fulfillment. However, once the deployment date and time have passed, no survey responses are allowed (deployment is not valid, is not active, or you are using an invalid URL).

Solution 1

Check the Survey Administration console to see if the response end date has already passed or the status has changed from Active to Closed or Cancelled.

Solution 2

Check the invitation to see if the URL in the e-mail link is in the appropriate format as indicated below:

http://<server>.<domain>:<port>/OA_HTML/OA.jsp?OAFunc=IES_SURVEY_OARUNTIME?dID=xx&rID=xxxxxxxx 

Solution 3

Check the Fulfillment Administration console to determine if there is a Fulfillment server problem.

Problem 2

If the Fulfillment request indicates Phase: Completed, Status: Error, you can resubmit the request. To resubmit it:

  1. Copy the parameters from the Request Detail form.

  2. Return to the Navigator.

  3. Navigate to Survey Administration > Requests > Run.

  4. Select "Single Request" from the Submit a New Request dialog and click OK.

    The Submit Request form will appear.

  5. In the Names field, enter "SUBMIT GROUP FM REQUEST FROM IES" and press Tab.

    You can enter partial criteria and use the % wildcard character, if desired.

    The Parameters dialog will appear.

  6. One at a time, enter the parameters you copied from the failed request, and click Submit.

    There are 9 parameters, each separated by a comma. If nothing appears before a comma, that parameter is null and can be left blank.

  7. After clicking submit, a dialog will appear with a request ID. Copy the request ID and use this to track your request.

    Note: The deployment detail page will still indicate the original request ID. This will not be updated; ensure you use the new request ID to track your request.

User Interface Discrepancies

Oracle Applications is a rich, full-functioned, constantly evolving software suite. It is the only available software suite that offers the world's most proven and scalable database, a commonly implemented applications server, mature back-end ERP functionality such as human resources and financials, and cutting-edge front-office customer-facing CRM applications, of which Oracle Scripting is just one offering. Considering the scope of its function, Oracle Applications is necessarily complex, and patching takes experienced administrators, careful attention to detail, and adherance to requirements indicated in readme and about documents.

As indicated in our Send Us Your Comments section, Oracle welcomes your input, including any corrections you feel are appropriate to this document. Note, however, that if you see discrepancies between the application user interface and the procedures documented herein, there are several potential causes. These include, but are not limited, to the following:

Log Files and Error Messages

Problems encountered with Oracle Scripting may differ in origin based on the component being used and the source of the error. Oracle Scripting includes various tools to help users and administrators detect and eliminate problems.

Oracle Scripting includes four primary components, most of which have one or more subcomponents for which information and problems are reported either to a message log (typically stored as log files in the database) or as an entry in a debug console.

Components and Subcomponents of Oracle Scripting

Problems encountered with Oracle Scripting can be detected and debugged by determining the source of the error and tracking down the appropriate informational message. Based on the source of the problem or the interface experiencing difficulties, error, informational, or debug messages may be located as follows:

Component Subcomponent Configuration How to View Logs Runs on Client Desktop
Script Author Java Applet   Script Author Debug Console Yes
Script Author Servlet Four AFLOG profiles Log Viewer No
Scripting Engine Apache mid-tier Four AFLOG profiles Log Viewer No
Scripting Engine Forms/Java Client IES : Debug Mode profile Java Client Debug Console and Jinitiator Console Yes
Scripting Engine HTML Client Four AFLOG profiles Log Viewer No
Scripting Engine Forms PLSQL Integration Layer Four AFLOG profiles Log Viewer No
Scripting Engine Survey Runtime Four AFLOG profiles Log Viewer No
Survey Administration console N/A Four AFLOG profiles Log Viewer No
Scripting Administration console N/A Four AFLOG profiles Log Viewer No

Configuration Guidelines

Various system profiles control the logging of error and informational messages.

IES : Debug Mode profile (set to Debug off or Debug on) controls display at runtime of informational and error messages for Scripting Engine operations. When enabled, these messages are displayed in a Java-based Debug console that appears (in a separate window) when a script is executed in the Scripting Engine agent interface.

IES : Debug Mode (set to Debug off or Debug on) controls display at runtime of informational and error messages for Scripting Engine operations. These messages are logged to the FND_LOG_MESSAGES database table in the Oracle Applications schema, and are typically viewed by accessing Diagnostics. Generally set to Debug off unless troubleshooting specific issues.

This section includes the following topics:

Oracle Scripting Execution Errors and Error Logging

When executing the Scripting Engine, any resulting errors are stored in various places and viewed differently based on the genesis of the error.

This section includes the following topics:

Errors in the Scripting Engine Agent Interface

Errors in the Scripting Engine Web Interface

When a respondent is taking a survey, errors are distinguished by the two components of the JSP layer:

  1. The Scripting HTML client, which takes the script and renders HTML.

  2. The survey-specific layer that wraps the output to the HTML client in survey-specific functionality (such as checking Deployment IDs for a valid deployment URL).

In general:

From a Survey perspective, the Scripting Engine is a set of Java classes on the middle tier that receives requests from the JSP layer (including the message to launch a script), and processes them. All business logic as determined by the survey questionnaire script, custom code or database calls, and respondent actions are evaluated by the Scripting Engine, which passes processing information to the JSP layer to interpret, which in turn sends information to the Web browser to display. Scripting Engine errors are automatically stored in the server and can be viewed with the CRM HTML-based server log viewer, regardless of the debug mode.

Errors in the interpretation of the survey questionnaire script, custom code or database calls, and respondent actions will automatically store error messages in the server and can be viewed with the CRM HTML-based server log viewer. These errors are written to the server logs regardless of debug being on or off. Additional informational messages are also stored in the server logs when debugging mode is enabled.

JSP Layer Errors

The Java Server Pages layer includes a survey functionality component and an HTML client component in the middle tier. When a request to process a URL linked to a particular survey campaign deployment is received in the middle tier, it is evaluated by the survey processing component. This component receives the request, processes it, and validates it. If there is an error (such as invalid deployment ID, invalid URL or invalid date due to an expired or inactive deployment), the survey processing component generates an error message to be sent to the Web browser. The error message is displayed in the Web browser as an error page. Viewing the source of the page from the browser may provide additional information regarding the error, such as stack trace messages useful for troubleshooting.

If valid, the request is sent to the HTML client component, which sends a request to the Scripting Engine. The HTML client component serves as a broker between processing occurring in the Scripting Engine and the survey processing component, which passes information to the Web browser to display.

Unsupported Functions

This section describes functionality that is not supported with Oracle Scripting.

This section includes the following topics:

Panel Layout Editor Formatting Limitations

Problem

In Script Author, you have correctly formatted an embedded value to provide a blackboard value in a panel at runtime. There is no other content in the panel (other than the Continue button). In other panels, the same procedure was effective, while at runtime in this case, no value appears (only the Continue button).

Cause

In the Script Author, you cannot include in panel layout an embedded value only, with no other content.

Attempting to include only an embedded value (with no other characters) in the panel layout will result in the blackboard value not appearing in the panel at runtime.

Solution

As a work-around, you must include at least one character (a space character is acceptable) before and after the embedded value, and highlight these additional characters also when establishing the embedded value.