After receiving several questions about the new Oracle 11 protocol on LoadRunner and the version 12 of the E-Business suite, I thought it would interesting to give a few tips about these technologies too.
Oracle Web Applications 11i is the new protocol used by the newer LoadRunner versions to script the E-Business suite. The advantage of it is that you can use a single protocol to script the application instead of using the multi-protocol approach. This can be useful if your license is limited or you don’t want to spend more money on protocols that you don’t have. Another advantage is that this protocol can be used to script the newer version of the E-Business suite, 12.
Tip 1: Correlating the Login
After recording your basic script, the first thing you will have to correlate on the Login is the ICX ticket.
In order to do do this, you will have to add this command right before clicking on the functionality link:
web_reg_save_param("ICX",
"LB=var xgv15 \= \"",
"RB=\"\n",
"Search=Body",
LAST);
Eg.: If you accessing the “Submit Processes and Reports” functionality for example, you will have to add this code right before the “web_text_link(“Submit Processes and Reports”…” line.
This parameter will be used later on the “nca_connect_server” and “frmservlet” requests. On both requests, look for the “icx_ticket=” part of the URL and replace the code to your parameter ({ICX})
You will also need to correlate another session parameter that sometimes is not correlated automatically and sometimes is wrongly correlated when you’re recording the script.
Look for the “web_url(“frmservlet”…” line mentioned above and add the following block BEFORE it:
web_reg_save_param("Jsession",
"LB=/forms/lservlet;jsessionid\=",
"RB=",
"Search=Noresource",
LAST);
This will create the “Jsession” parameter that will be used on another call before the “nca_connect_server” call.
Look for a line that starts with “web_url(“lservlet;jsessionid=” and replace on the URL parameter the large string that comes after “/lservlet;jsessionid=” with your parameter. Remember, do not replace the large session string on the title (first parameter), but on the URL parameter. Eg.:
web_url("lservlet;jsessionid=5ce9bad22e40aa7f7f9c4cff2549fc09a968476354cb39d14a0bd8636339170b.e38NaN0ObNiKai0LbNiSchaRaNaMe0",
"URL=http://<you_application_server>/forms/lservlet;jsessionid={Jsession}?ifcmd=getinfo&ifhost=XXX&ifip=10.10.10.10",
To summarize things you will have to do 5 things.
- Capture the ICX paramter
- Replace the ICX parameter on the frmservlet call
- Replace the ICX parameter on the nca_connect_server request
- Capture the Jsession paramter
- Replace the Jsession parameter on the lservlet;jsessionid= call
This should also work if you’re scripting against an Oracle 11 application with the new LoadRunner protocol.
And remember, this has worked for me, but may not work for you depending on how your application was deployed and configured.
Tip 2: Recording Sessions with HTTPS (SSL)
Your application may be configured to use SSL (HTTPS connections). If this is your case, you probably won’t be able to record your scripts directly since LoadRunner is not able to identify which server you’re connecting to.
To solve this issue you will have to manually add your application server address and port before recording.
Click on the “Options” button on the lower left corner of the recording window (before you start recording).
Select “Network > Port Mapping” on the left side pane and click on the “New Entry” button. This screen should be presented:
Target Server and Port are respectively your application server address and port. Service you can leave as “Auto Detect”. Record Type you can leave as “Proxy”. Set Connection type to “Auto”.
This will enable the SSL Versions and SSL Cyphers fields. With this fields you will have to check with your application administrator or spend some time “guessing” the correct configuration.
Click on Update and start recording the script. If everything was set correctly, LoadRunner should be recording your actions inside the application as usual.
Related posts:
- How to script Oracle 11i Apps on LoadRunner
- Recording Citrix scripts on LoadRunner
- Using WSDL files to Create WebService Scripts
- How to Change the TimeOut on LoadRunner
- Configuring Sitescope and Weblogic Servers





#1 by Daisy on September 1, 2009 - 2:02 PM
Well done, Martin!
Good summary!
#2 by Jeevan on April 26, 2011 - 6:41 PM
Great article.. can’t get any better
Thanks a ton
#3 by Maria on July 3, 2011 - 8:41 PM
Hi Martin,
You seem to be the expert who can help me with my LoadRunner-Oracle Apps issue. I am new to loadrunner and I’m using it for Oracle E-Business R12. At first, I was getting this error “Error: nca_connect_server: cannot communicate with host…” but after following your example, i am now getting this:
Action.c(150): Error -26377: No match found for the requested parameter “NCAJServSessionId”. Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 5000 bytes, use web_set_max_html_param_len to increase the parameter size [MsgId: MERR-26377]
Action.c(150): web_url(“frmservlet”) highest severity level was “ERROR”, 271 body bytes, 139 header bytes [MsgId: MMSG-26388]
I tried increasing the parameter size but no luck. We are on a tight deadline and any help would be appreciated. I will send the related files shortly.
Thanks in advance.
Maria
#4 by Martin on July 5, 2011 - 6:05 PM
Hi Maria,
Got your e-mail as well and checked the sample script that you sent. Session ID is there, at the generation log:
****** Response Body For Transaction With Id 151 ******
/forms/lservlet;jsessionid=1185dd63d1b48227acecc462978ba821aa273de49edb11a13430fc9c95e3808f.e34NbNqRb3yPbO0LbNiTb30NaN0Pe0
$$$$$$ Response Body For Transaction With Id 151 Ended $$$$$$
After checking the script, noticed that there is a backslash missing on the web_reg_save_param call, right before the equal sign:
"LB=/forms/lservlet;jsessionid\=",Try changing that and let me know what happens.
Cheers,
Martin
#5 by Maria on July 5, 2011 - 7:55 PM
Hi Martin,
Thanks for your reply. I have added the backslash exactly as you suggested but im still getting the same error. Any other things i need to check?
#6 by Martin on July 5, 2011 - 8:10 PM
That should be it. If you search the generation log, you will be able to see the jsessionid (1185dd63d1b48227acecc462978ba821aa273de49edb11a13430fc9c95e3808f.e34NbNqRb3yPbO0LbNiTb30NaN0Pe0).. It should be a simple correlation. You can try removing the “Search=Noresource” parameter. Another option would be including a new line (\n) char as RB..
Besides that, can you confirm that the “frmservlet” is being loaded correctly? You can check that by enabling full log with reponse from server and looking for the “jsessionid” string.
–Martin
#7 by Maria on July 5, 2011 - 10:49 PM
I tried your suggestions but still the same error. I will upload the files again.
I am actually getting the error on the frmservlet line, please see screenshot.
Thanks again
#8 by Maria on July 7, 2011 - 9:46 PM
Hi Hi Martin,
I have progressed with my scripts, I am now getting the values for ICX ticket and JSessionID, got passed the frmservlet as well.. But I’m still getting an error
Action.c(236): Error: nca_connect_server: cannot communicate with host skm-d-as-3.skmconsulting.com on port 8010
Anything else I need to change or configure in Oracle Apps?
#9 by Martin on July 25, 2011 - 3:24 PM
Hi Cecilia,
Sorry for taking this long to reply. I’ve been traveling for the last few weeks and was not able to catch up with my emails until now.
If this is still a problem for you, the first thing that comes to my mind is the port number. Apparently you’re trying to connect to the server at the same port as the web server. This is not usually the case.
Besides the session id, there are other things that need to be correlated. One of them is the domain and port number to connect. Check Tip 1 at:
http://martinspier.co.uk/how-to-script-oracle-11i-apps-on-loadrunner
It might give you an idea about what else needs to be correlated.
Cheers,
Martin
#10 by Tirumalaiah K on July 27, 2011 - 7:38 AM
Hi Martin,
Great Article
Referening your blog only i was able to successfully completed the script without , even am new to Oracle 11i protocol.
I was able to run script for multiple iterations successfully as well, but when am trying to connect the serevr, same time getting downloading unknow file ( pop up window) in vugen while replying, can you please help me what would be the issue and how to resolve it.
Yet to run in controller with concurrent vusers, if this pop window still geting in Vugen, if we are running same in the controller it will cause any problem.
#11 by Martin on July 28, 2011 - 1:52 PM
Thanks Tirumalaiah,
Not sure if I understood your question. Can you get a screenshot of the error, upload it to http://imgur.com/ or similar site and reply to this thread. This way I can have a look on the actual error.
Cheers,
Martin
#12 by Maria on August 2, 2011 - 10:03 PM
Thanks Martin
Appreciate your help on this.
====================
1. >
Actually, the script error was fixed by creating a new jsessionid correlation and leaving the NCAJServSessionId created during recording as is
i.e I have in my script:
web_reg_save_param(“NCAJServSessionId”,
“LB=”,
“RB=”,
“Search=Noresource”,
LAST);
web_reg_save_param(“JSessionId”,
“LB=/forms/lservlet;jsessionid=”,
“RB=”,
“Search=Noresource”,
LAST);
Why we need first “web_reg_save_param” call:
Next fact about LR’s NCA protocol: NCA expects that required URL-string will be placed into parameter with name “NCAJServSessionId”, but not only session id value. That is why we should not modify “LB=” and “RB=” border strings of “web_reg_save_param” for “NCAJServSessionId” parameter, otherwise we supply NCA’s replay engine with incomplete URL (this will lead to replay failure).
Actually (IMHO), the mentioned parameter name “NCAJServSessionId” is not self descriptive and can mislead us, since it’s parameter contains complete URL-string, but not only session id part (so it is better to name it, something like “NCAJServSessionURL”).
BTW “NCAJServSessionId” is not used within a script: it is used inside LR’s replay engine for communicating with Forms server while script execution.
Why we need second “web_reg_save_param” call:
It is simple: we need to correlate WEB part of script and there is required only session id value, not complete URL-string.
============================
2. >
Do you also work on RUN LOAD TESTS?
If so, Have you ever encountered a problem with Flexfields not being recognized during Run load tests?
Action.c(48): Error: nca_flex_set_cell_data(“Find Accounts”,”Entity”,”Low”,”100″) failed, Window or object is not displayed.
The window currently in focus: “Account Inquiry (Global Ledger Set)”.
I tried creating a different business scenario without Flexfields but the scripts wont finish.. would always end up to “Stopped” (Attached screen shots)
I would appreaciate any info that you can share.
Thanks again
#13 by Martin on August 2, 2011 - 10:04 PM
Hi Cecilia,
Great to hear that you managed to get the script working!
There are always many ways of doing the same thing. The key to get everything working is always to troubleshoot carefully!
I also execute tests (among many other things).
The issue you mentioned is very common on Oracle scripts. Since the execution is done by window and field navigation, sometimes the script logic is not correct and the field you’re trying to edit is not on the current window (because of a pop-up or different window).
In this case, apparently there is not a “Find Accounts” cell on the Account Inquiry (Global Ledger Set). What happens sometimes is that for different users or when running with more than 1 user, the application behaves differently, showing different windows or pop-ups.
Check your scripts logic to make sure you’re account for these different paths.
Cheers,
Martin
#14 by Jorge on October 8, 2011 - 4:38 PM
Hey Martin, I had the same issues as Maria did and well your article just helped me out, the thing now and I have spent the whole week reading articles, etc (btw I just opened a ticket on HP…) and well I want to share this issue here so in case others face this you may have a solution or if I get the HP support I’ll let you all know… so the thing is that I have all the correlations in place, but at the moment the oracle executes the nca_connect_server:
nca_connect_server(“xxxxx.com”, “port”, “module=/mis/erpdev/majcrp/apps/apps_st/appl/fnd/12.0.0/forms/US/FNDSCSGN fndnam=APPS config=’majcrp’ icx_ticket=’.{Cor_ICXTicket}’ resp=’PO/XSJ_PURCHASING_BUYER’ secgrp=’STANDARD’ start_func=’PO_POXBWVRP’ other_params=”::NLS_LANG=’AMERICAN_AMERICA’ FORMS_USER_DATE_FORMAT=’DD-MON-RRRR’ FORMS_USER_DATETIME_FORMAT=’DD-MON-RRRR HH24:MI:SS’ NLS_DATE_LANGUAGE=’AMERICAN’ NLS_SORT=’BINARY’ NLS_NUMERIC_CHARACTERS=’.,’”);
I get this error:Action.c(386): connect_server: connection with host “xsj-dvapebzcrp-vip.xilinx.com” on port 8014 established
Action.c(386): Popup message: stop – Cannot complete applications logon. You may have entered an invalid applications password, or there may have been a database connect error.
Action.c(388): nca_set_window(“Find Requisition Lines”)
Action.c(390): Error: nca_obj_type(“270″) failed, Window or object is not displayed.
The window currently in focus: “Error”.
So looks like it successfully establishes connection but then it throws an Error to the form which makes the nca_obj_type line to fail since that object does not exist. However if I perform this process manually I don’t get any sort of error…
I have tried many different things such as correlations (JessionID, icx_ticket) but nothing seems to work fine.
Have you ever seen something like this before? well i’ll let u know how it goes…
Thanks,
Jorge
#15 by Martin on October 10, 2011 - 8:33 PM
Thanks for sharing that Jorge!
I don’t recall ever having a problem like that. Opening a ticket with HP is also my first step when facing issues like that. It may take a while, but they usually have an answer.
This might require some deeper troubleshooting, but my (wild) guess would be checking the user/password, specially for special characters. Try changing the password to something simple and trying again.
Also, if you get this fixed, feel free to share it with us!
Cheers,
Martin
#16 by Faraz on December 12, 2011 - 8:41 AM
Hi Martin,
Thanks for sharing this information. I wanted to ask you what is the best to way to capture Oracle R12 Concurrent Requests performance using LR 11.0?
Regards
Faraz
#17 by Martin on December 12, 2011 - 2:46 PM
Hi Faraz,
I’m assuming you want to capture the processing time, right? We had the same problem before and the solution we came with was to use VTS (Virtual Table Server) to store the request numbers and processing time during the execution. After the test, we had all request numbers and the processing time at a table that could be exported to any application to get average, std. dev., etc.
Cheers,
Martin