By default while automating mainframe Set Field or Set Field at Position and other fields are shown as disabled

I am working on a mainframe application and able to connect using Direct connection. Checked even able to “Get text at Position” and its perfectly getting value. But “Set Field”, “SetField at Position” or “Move Cursor” and other similar activities are all disabled and not performing any action. Even checked on the recorder screen these options are by default disabled; unless I manually click within the mainframe screen using keyboard. How can I make sure that mainframe screen is enabled during automation script run.

Hi @azmatrana,
With regards to the field based activities, the situation that you are describing is by design. These activities need all of the criteria fields (Labeled By, Index and Followed By) to be populated correctly to function properly. Partial criteria is not accepted.
It is almost impossible for the automation developer to do this manually and because of that, in the recorder window, you need to first select a field on the screen for the field related menu items to become enabled.
Also, it isn’t often very clear visually, how the screen is split into fields.
Note that you can press the “Field properties” button in the recorder window to see the properties of the field you just selected on screen.
For the above reasons, the best practices section in the documentation suggest to avoid the field based activities.
On the other hand, the Move Cursor activity should be enabled in all cases. Can you provide more details about the situations where it did not work or was disables?


I am able to connect to Mainframe but the mainframe is connected with UiPath Terminal wizard; however I want to attach to an already opened Mainframe window just like any browser or window application.

Unfortunately that is not possible with Direct Connection. The Wizard will always start a session from the beginning and save the recorded actions when the wizard is closed. It does not have full keyboard/mouse interaction like a regular terminal emulator.
It is not meant to be a full featured terminal emulator.
Similarly, at runtime, the terminal viewer is only meant to show the operations being performed by the robot.
If you really need to connect to an existing session you need a full featured terminal emulator to which you can connect with other providers like EHLLAPI.

I have even used EHLLAPI; but then also I am not able to connect to existing session. I am using IBM iAccess Client Solution. During runtime this is opened in UiPath Terminal Wizard

With the EHLLAPI provider you connect to a running terminal emulator, in your case IBM iAccess Client, via EHLLAPI. So, by definition, you connect to an existing session.
So when you try to use the wizard with EHLLAPI, iAccess Client needs to be started and connected. Whatever you see in iAccess you will also see mirrored in the wizard.
The same goes for runtime. You will probably need to automate the starting of the iAccess application before the execution of the Terminal Session that is using ehllapi.
The wizard has nothing to do with the runtime. It’s only a design time tool to help with development.
Here is my setup with iAccess Client:

When I open the wizard via the Start Recorder button, things will look like this:

Thanks for the suggestion; now I am able to connect but during runtime no input command is being executed on mainframe screen. please find below the Terminal Configuration Attach property string: “{‘AttachExisting’:false,‘ConnectionProtocol’:0,‘ConnectionType’:2,‘EhllBasicMode’:false,‘EhllDll’:‘C:\Program Files (x86)\IBM\EHLLAPI\pcshll32.dll’,‘EhllEnhanced’:true,‘EhllFunction’:‘hllapi’,‘EhllSession’:‘A’,‘EnableSSL’:false,‘Host’:null,‘InProcessMode’:false,‘Mode’:1,‘Port’:23,‘Profile’:null,‘ProviderType’:4,‘ShowTerminal’:true,‘TerminalModel’:0,‘TerminalType’:0}”

Is the string fine or should we change AttachExisting to true.

The AttachExisting property is not used with EHLLAPI. It’s meant to be used with other providers.

What are the input commands that you are trying to execute?

Thanks a lot its working fine. I restarted UiPath and it worked fine. Also forcefully closed UiPath terminal Host from the Task Manager and it worked fine.

Now Escape control key is not working means not performing any operation on Mainframe screen

The user’s keyboard is mapped to host functions in the terminal emulator.
If you go in iAccess to Edit-Preferences-Keyboard, then Search For Key and press “escape”, you should find the corresponding Host function. In my case it’s “Attention”.
So to perform the same action as the user pressing Escape I need to do Send Control Key = “Attention”.

Thanks for helping out. You were of great help.