How to script Oracle 11i Apps on LoadRunner

A lot of people came to me on the last few weeks asking about Oracle Apps scripts. As I’ve been noticing during the last year, Oracle Apps (Financial) is dominating the ERP business and growing in a gigantic rate.

As I like to say, “Oracle is the new thing today”. Everybody is changing to Oracle, developing new solutions on their platform and I don’t have to say that also, creating new challenges for Performance Testing. For our luck, my opinion so far is that Oracle Apps do very well regarding performance if well designed and configured.

Obviously I’m not here to talk about Oracle Apps itself, with their search queries and concurrent requests. I’m here to give a few tips based on the things I learned while testing Oracle Apps.

Before I start, I just want to point that this is only one example of how things worked for me. If you’ve been on Performance Testing for a while, you should know that there are several ways of doing the same thing. Most examples were tested using LR 9.5 and Oracle 11i. I know that most tips can also be applied to LR 8.1, 9.1 and also Oracle 10.

Tip 1: How to correlate the Login?

Login is usually the tricky part of the Oracle Apps. The way I usually do is to use a multiple protocol script, HTTP and Oracle NCA. I know that the newer versions of LR have a specific protocol for Oracle Apps, but this has worked pretty well for me.

To make things easier, let’s record the steps from the web interface first. Don’t forget to add some comments, Each click on the web interface generates several requests and sometimes the same happens inside the application too.

All very simple so far. If you done the right things so far, LR should be capturing all events, both on the web interface and the Oracle interface. Once you’ve finished and LR generated the basic script, the tricky correlations come in.

On most cases, you will be using more than one application note. This means load balancing. In order to do this, the web front-end will send you a node name, port and domain.

To capture this information, use the following lines on the first request made when selected a form. Right before the “RF.jsp” call.

web_reg_save_param("serv_name", "LB=var xsname          = \"", "RB=\"", LAST);
web_reg_save_param("port_num", "LB=var xsport          = \"", "RB=\"", LAST);
web_reg_save_param("domain_name", "LB=var xdname          = \"", "RB=\"", LAST);

This will capture the required information for the load balancing. Now let’s concatenate this and create a connection string. Add this right after the “RF.jsp” call.

lr_save_string(lr_eval_string("{serv_name}{domain_name}"), "serv_name");

Now that we have the connection string, we need to capture some variables needed for the connection, like the form to be launched, some profile information, etc.

Right after the command above, add the following lines:

web_reg_save_param("nca_connect_1", "LB=<PARAM name=serverArgs    value=\"", "RB=  config='", LAST);
web_reg_save_param("nca_connect_2", "LB=var xform_params  = \"", "RB=\"\n", LAST);
web_reg_save_param("nca_connect_3", "LB=var xenv          = \"", "RB=\"\n", LAST);

Now that we have captured all information we need to connect, let’s change the connection line. Replace the “nca_connect_server” line to:

nca_connect_server("{serv_name}", "{port_num}", "{nca_connect_1} record=names {nca_connect_2}::{nca_connect_3}");

All done! Now you should be able to execute the Login correctly.

Tip 2: How to record the correct field names?

If you recorded a few scripts and you’re having problems with missing fields on second and subsequent interactions of your script, that’s probably because LR is not recording the filed names correctly. Oracle, depending on how it was configured, selects random field names depending on the interaction, usually plain numbers.

In order to solve that, you will have to change some configurations on your profile or default profile on Oracle. Obviously, you will need rights to change this information and usually to change the default profile, you will need the SYSADMIN user.

OK, all rights granted. Follow these steps:

  1. Open the Web Interface;
  2. Login with your user (or SYSADMIN);
  3. Select the role “System Administrator”. If you don’t have this role, you don’t have the rights to do this;
  4. Select the option “Profile: System”;
  5. Search for the following profile option: “ICX: Forms Launcher” (Search for a specific user to change only the settings for one user);
  6. Append this string to the end URL: “?play=&record=names”;
  7. Save and close everything;
  8. Try recording the script again.

ps.: Sorry if you already recorded all your scripts, you’ll have to do it again to get the field names right.

Tip 3: Other profile settings

These settings are not required, but are best practices gained though time. Change the following profile options the same way you changed the “ICX: Forms Launcher” option before:

ICX:Session Timeout: 3000s: Use this profile option to enforce an inactivity time-out. If a user performs no Oracle Applications operation for a time period longer than the time-out value (specified in minutes), the user’s session is disabled. The user is provided an opportunity to re-authenticate and re-enable a timed-out session. If re-authentication is successful, the session is re-enabled and no work is lost. Otherwise, Oracle Applications exits without saving pending work. If this profile option to 0 or NULL, then user sessions will never time out due to inactivity.

ICX: Limit time: 999h: Use this profile option to specify the absolute maximum length of time (in hours) of any user session, active or inactive.

ICX: Limit connect: 2000: Use this profile option to specify the absolute maximum number of connection requests a user can make in a single session.

Hope these tips will help you facing the “Oracle Challenge”!

Tweet about this on TwitterShare on LinkedInShare on FacebookShare on Google+

46 thoughts on “How to script Oracle 11i Apps on LoadRunner

  1. HI Martin. Can you please help in correlation of login for r12 i tried all the above solution but still cannot resolve the issue

  2. Hello,

    I’m using Load runner’s Web(HTML/HTTP) protocol to record a URL. I observed that a dynamic ID is generated in the very first request of the recorded script. The dynamic ID is passed in the very first recorded URL itself. There is no request response above to capture this dynamic ID. How do I correlate this ?

    “Url=IMAGES/bg_grey.png”, “Referer=”, ENDITEM,

    Please help.

    Thanks in advance.
    Vishal Parekh

  3. Hi Martin,

    I’m a functional oracle application analyst. I want to do a load test of Oracle Application 11i and few custom interfaces which we build within sub ledger modules and between sub ledger to GL & FA modules. If I want to do stress testing for one particular interface for having huge data. what is the best option? Are you providing any training of Load Runner for R11i & R12? Thanks in advance.

  4. hi martin,

    I hope you are able to find sometime and troubleshoot my problem?

  5. VALUE=”/forms/java”>

    serverArgs="escapeParams=true module=Login userid= debug=no host= port= obr=no record=names tracegroup= log= term= ssoProxyConnect=no"
    allowAlertClipboard" VALUE="true"

  6. here is how my JS looks like; response that is

  7. sorry i pasted wrong post and that to twice :S ; this is basically a response to my java script call … after that only servlets are called and then connection is established . that you probably can see from my yesterday’s script.
    thank in advance if you can track issues

  8. HI martin,
    thanks for your reply. actually all three parameteres that are defined are nto recognized; i am sure i am not gettint to know about correlation that well. For jsession it is making sense since i declared it before a url and replaced it.

    Now i have a servlet that loads and it has serv args and a url but i dont know how to do it.

    can you figure out where should i place these three declarations ? before JS servlet or where ?

    Or give a brief idea as in how you are using port and domain ,serve_name. i dont see these param in generation log.

  9. One more thing i would like to mention here is that i dont get any ICX tciket in response

    • Hi Humaira,
      From what I saw on your script, you might be missing a few correlation steps. Besides the JSessionId, you also need to correlate the server name, port and domain, along with the 3 server args used on the connection. Once you have all these correlations done, you need to change the nca_connect_server line accordingly. That’s probably why you’re getting connection refused.


  10. also usign your tip 1 in script i get this error :
    Error -26377: No match found for the requested parameter


    i hope you see my comment sooner than later


    • What parameter exactly? I’m sure that the correlations I mentioned on the post were working fine for 11i and R12, if placed correctly. Newer versions might have changed that a little bit, but you can check that on your generation log.


  11. hi martin,

    I am struglling with oracle nca and http protocol to record oracle fusion middle ware forms.

    My probelms are the same as listed above but i am unable to fix it uptil now.

    first part of this article is actually causing issues in my recording; when i try to parametrize values it gives me an error.

    and even after correlating JSESSION ID i am getting this error :

    1305vuser_init.c(84): Error: nca_connect_server: cannot communicate with host on port 1305

    Can you highlight possible solutions? and do you think correlating login gonna solve this one specific issue.?

    To roughly show you how my script looks like:

    web_set_sockets_option(“SSL_VERSION”, “3”);











    nca_set_connect_opt(SCALE_INFO, 8, 18);

    nca_set_connect_opt(REQUIRED_LIST, 0);


    nca_connect_server(“”, “1305”,”escapeParams=true module=Login userid= debug=no host= port= obr=no record=names tracegroup= log= term= ssoProxyConnect=no fndnam=apps”);

    nca_set_window(“Hec Statistical Portal”);

    one more thing to add in here; i read your two articles so one soln you propsed was saying that app server IP is different than web servers.
    but after recording application and net_connect_server ; i get same IP and port. i changed it as well but its of no use.

  12. am getting the error as below when I replay the script for two iterations in VuGen.Oralce Application 11.5.8 with LoadRunner 8.0

    Scenario is :

    Action.c(55): Popup message: stop – Internal communication error: the command name dispatched by the Scheduler Java Bean does not match the most recently executed command. Please report this incident to Oracle Support.

    This is because of the error pop up window from the server before accepting the Cancellation of the Schedule advise window and it is happening in the second Iteration and not in first iteration.

    vuser_end.c (6): Error: nca_win_close (“Field Service Dispatch Center”) failed, Window or object is disabled

    The window currently in focus: “Error”

    • Hi Suresh,
      Apparently you already know the root cause of the LoadRunner error. There is an error message on the second iteration.

      My question is, does this also happen when using the application normally (via Browser)?? Is this expected?

      If it happens on the browser (without LoadRunner), not much that can be done other than checking what is wrong with the application (with development, environment, etc). This is not a scripting issue.
      If it is expected, you will probably have to create a step to check for this error message (IF), close it, and continue.


  13. hi,

    after go through this page, i tried to use oracle nca and web http/html protocols. My bussiness process is to create RCS. When i submit the new record, an RCS ID will be populated by the system. I need to correlate this ID. In Tree View im not able to see any server respond this RCS ID. Please help me how can i correlate the dynmaic id produced by the system.

    • Hi,
      Does your business process include only Web requests? Or it includes Oracle (Java) requests? What I mean by that is: Does your process use the Oracle Java interface? Does this RCS ID is shown on a field on the screen?
      If it does, usually your return (in this case, the RCS ID) will not be in a server response, and cannot be retrieved thru web_reg_save_param or similar command. In this case, you need to use the Oracle NCA protocol command to get the text of an object (the object on the screen that shows the RCS ID).

      Don’t know if I was clear enough, but the bottom line is that you can’t use web_reg_save_param to get the response from a Oracle NCA command, in case your are using it.

      If that doesn’t help, send me a part of your code to help clarify the problem


  14. Hi Martin, I am getting the below error while replaying a Oracle Apps navigation script that I recorded using Oracle NCA + Web(HTTP/HTML) protocol.

    Action.c(406): Error: nca_lov_retrieve_items(“Organizations”) failed, Window or object is not displayed.
    The window currently in focus: “Error”.
    The last popup/alert message received: “stop – Cannot complete applications logon. You may have entered an invalid applications password, or there may have been a database connect error.”
    Vuser Terminated.

    Could you please let me know, what can help in resolving this error?

    • Probably the retrieve “Organizations” is the first step after the login, right?

      Apparently what is happening is:
      The login cannot be completed, due to “… entered an invalid applications password, or there may have been a database connect error.”, and the execution cannot continue.
      Since the Oracle protocol uses a navigation based on windows and fields, it failed because the expected field was not there. Instead, there was a error message window. Obviously, the error message window does not have the field you were expecting, so, this “Window or object is not displayed.” error message is displayed.

      I suggest checking the action before the action on line 406 to be sure everything is OK.

      Have you done all correlations on the login? If yes, check if the captured port is the correct one, this is an usual problem.


  15. Hi Martin,

    In continuation to the above posting (#22 and #24)

    1) We are using IE7. So there is no issue with browser
    2) When we are using Oracle Web application 11i protocol in GUI recording mode, the LR is recording web transactions but not Oracle transactions. In HTML mode, no web transactions are getting recorded too.
    3) When we use Oracle NCA + Web (Click and Script), the LR is recording web transactions but not Oracle transactions. Using Oracle NCA + Web (HTTP and HTML), no web transaction is getting recorded too.
    4) I am still to try “tip 2” you mentioned as it requires some server side information.
    5) As per your suggestion in #23, I tried to look for a protocol “HTTPS changes” but I do not find one. Can you please elobarate on this

    Thank you, Sai.

    • Apparently you are using HTTPS (Secure), instead of plain HTTP connection. The instructions from Tip 2 should cover this..
      Basically the steps provided there show how to “inform” LoadRunner that you are using a secure connection. Then it should be able to record the Oracle actions.


  16. Hi Martin,

    I am experiencing a Load runner – Oracle apps compatibility issue. None of the actions performed on Oracle apps application are being recognized by Load runner i.e. load runner is not generating any script for the user actions on Oracle apps application

    Tried using Oracle NCA protocol first – No luck

    Tried with multiple protocol recording using Oracle NCA and Web protocols and recorded in HTML mode – No luck.

    I am sure I am missing something. Can you help me is resolving this issue at the earliest.

  17. Hi, I am using Oracle NCA and web(HTTP) protocol to record a oracle apps navigation.
    But I am not able to see any scripts recorded post the recording. What I am seeing is as below:



    return 0;

    Could please let me know where is it going wrong?

    • Hi Jonathan,
      I believe the issue might be the HTTPS protocol. When you try to record using Oracle NCA, without any changes, over HTTPS, that’s exactly what happens.

      What you can do is:
      1. Use Web (HTTP/HTML) + Oracle NCA + HTTPS Changes or;
      2. Use Oracle Web Applications 11i.

      I strongly suggest using option 2 if you have a newer version of LoadRunner. Regarding the changes to support HTTPS, you can find them in the following post:

      Check Tip 2!


  18. I have done,PGDM(Finance & Marketing) and what want do Oracle 11i Apps (Finance) ?

    How it will help in my Career?
    As i am working with iGATE Global solution in Noida in Royal Bank Of Canda Process in Cash Investigation Team for last 18th month …

    Please Suggest me …………..Where i can get the job and what will me my job profile after doing this course…..

    • Hi Vikas,
      let’s see if I understood you question correctly. You’re not working with IT and plan to take a course on Oracle EBS (Finance) and want to know how this can help your career.
      I’m not an expert on your field of work, but one thing I always advise people is to first make a plan (Short Term, Long Term) with your career objectives and then drill down to specific goals and then actions, like courses.
      Assuming you want to continue on your work field, but get a position on another company, the first thing I would do is to check the requirements on similar positions. If you already done that and noticed that Oracle is one of the requirements, I would check which modules are the most important and then get a course to have a better change of getting the position.

      Hope this helps.

  19. Thanks Martin.

    I will follow the approach you suggested.

  20. Hi all,

    I am pooja, QA Tester. I am intrested in Load runner, so i gained some knowledge on it by browsing and reading some PDF’s online. since i am novice to this technology, can i handle LR with oracle 11i protocol. If yes, give the steps needed right from the scratch. I am ready to work thoroughly to gain knowledge and expertise in it.

    • Hi Pooja,
      Always I have to give training to someone new to LoadRunner, I prefer starting with the basics, Web protocol, Google Searches, LR Tutorial, etc. If you’re learning on your own, I think the best approach would be starting with the tutorial that comes with LoadRunner. It covers all basic skills and also comes with its own web server and step by step guide.
      Oracle scripts are not difficult, but since you have to set some parameters and do some basic correlation, I believe starting with the LR tutorial would be the best option.
      To start scripting oracle apps you just have to create a new script, multi-protocol, web and oracle NCA and record the desired steps. After that you can just follow the correlations present on this post.


  21. Thanks Martin I was able to record the oracle 11i but facing another issue. Oracle form is linked to 170 Markview solution. When I click on the oracle form, it opens a url which inturn download a plugin(activex plugin) for markview. while recording its starts downloading but do not open the markview page. Instead it gives error on browser stating object does not support property or method. This happens if I have tried to open it first time on a system. So if this plugin is already installed and then if I try to record it give an error stating that ” not able to open configuration file of plugin”

    • Does it work when you’re not recording with LR??
      If its working when you’re not recording, probably it is an issue between the ActiveX plugin and the LR recoding module. You can try a couple things if that’s the case:
      Recording it with another browser. This already happened with me. IE was crashing when recording and I had to record the script with Firefox, which uses a different plugin.
      If that doesn’t help, you can try changing the recoding mode to a lower level, like HTTP/HTML in URL mode (Options > Recording > URL-based Script)


  22. I am using LR 9.10 / Jinitiator / Oracle 11i .But during recording IE crashes once I click on the link which opens the oracle forms. What happens in application is that when I click on that link it initiate downloading of some jar files and Jinitiator1.1.1.25, then it opens oracle form and also one another page which says applet started and message stating that ” closing this window will cause oracle based application to close immediately”. So while recording when I click on the link to open oracle form, IE(V 6.0) crashes and I am not able to record .

    • Since we’re talking about Oracle Apps, my guess would be always remove any Java installs and also the current JInitiator and then try again. I can say that about 90 of the strange issue I had recording Oracle apps had something to do with the Java version and JInitiator. Try removing both and start fresh.
      Alos, does it work when LR is not recording?? I already faced a similar issue with an application where LR was interfering with a ActiveX control installed on the browser. If that’s the case, it could be interesting removing some unused ActiveX controls from IE6.


  23. Error: nca_connect_server: cannot communicate with host XXX.XXX.XXX on port 7778

    All correlation of sessions are in order. Using LR 9.51

    The server does not even see any attempt to connect, so I suspect Oracle NCA not configured correctly, and the request does not hit the server. Any tips how to trace further?

    • Hi Gaby,
      what is the Oracle version? 11 or 12? I had some issues with 12, some additional parameters are needed.
      Also, in some cases, the port number returned by the Oracle server is wrong and I had to manually change it, ignoring the correlation and using a pre-defined parameter.
      Please let me know it this helps, otherwise I could check the code.


  24. Skip the above message, it was resolved by handling JServSessionIdforms.

    But I am still unable to connect
    error :
    Warning: failed to receive data from the server

    Error: nca_connect_server: cannot communicate with host on port 61048


    • Hi Chetan,
      are you capturing the server name and port from the http responses as I described on the post? What can happen sometimes is that Oracle returns the wrong port number on that variable. Check if 61048 is the correct port and if it’s not, set a static port number on the nca_connect_server call and try executing again.


  25. Hi Martin,

    I am facing a new issue when trying to login (as mentioned in your steps above) on Oracle 11i.

    I get value for all the mentioned parameters, but when used with “nca_connect_server” it throw an error.

    Error details

    HTTP error occured: Server “” has shut down the connection prematurely

    Warning -26000: Empty or no response for URL=””


    ifError expired (5) during NCA handshake,


  26. Hello Martin,

    Had you ever faced the problem in replaying the recorded Oracle 11i App. I have a E-Business Suite application and in a flow I have to search a field. The new search window is launched which LR is unable to handle (not identified). This new window has some dynamic values that not captured beforehand.

    I am using LR 9.10 / Jinitiator / Oracle 11i.

    Let me know incase you need more details.


    • Hello Chetan,
      from my experience, if LR executed the connection correctly and you’re using Oracle NCA protocol, most errors like this occur because another window (probably a pop-up) is in focus and LR cannot find the window you specified by title.
      If this is not your case, send me more details about the problem (error messages, command, etc) so I can have a better idea about what is happening.


  27. Hi,

    I see that you are an expert with oracle applications and thought you would be able to resolve or suggest me the solution.

    I have an application that is Oracle web forms where login page is html and after authentication I get applet forms to work on.

    I tried to record scripts using Oracle NCA and Web (HTTP/HTML) and all my scripts run successful but now one of my company person contacted HP sales and they said I should be using Oracle click and script thats (Oracle Web applications 11i protocol) in that case company will not require to buy web (HTTP/HTML) protocol. I tried to record script with Web applications 11i protocol and see the code looks same that i got with NCA and HTTP but when I did edit my script similar to Oracle NCA it does not replay successfully. I am in a big trouble and want to know why it does not run? Its failing at login part itself.

    If I do not resolve this problem then I will have to explain them why I should not be using web 11i and should be using NCA and HTTP.

    Please email me on my email address

    Any suggestions would help.


    • Hi Abvin, from my experience, if your application is 11i, using the multi-protocol approach is the best option.
      The problem with this approach is when your application is Oracle 12. The NCA protocol does not support Oracle 12 applications, that’s why HP suggests using the new protocol (11i Click & Script). It’s quite confusing, I know.
      If your problem is the license, with the new protocol you don’t have to use HTTP/HTML to record the Login part, but you will need another set of correlations to make it work.
      Is your application Oracle 11 or 12?

      • Hi Martin,

        Thanks for your answers.

        My Application is Oracle 11 but as you said its true could become 12 in later releases.

        Is it possible for you to share an example or some explanation as what type of correlation would require for login part if I use only Oracle NCA?


      • HI Vinay,
        I’ve been doing some tests on Oracle 12 on the last couple weeks and I’m planning to write a post about it soon, with all required correlations and application changes in order to record a script from ground. Basically I’m using only the Oracle 11i protocol, correlating the ICX ticket and some JSession variables.
        Please check back for the complete post in a couple days.


Leave a Reply