Robotic Process Automation (RPA)

Robotic Process Automation (RPA)

Come for answers. Stay for best practices. All we’re missing is you.

 View Only

Integrating watsonx Orchestrate with IBM RPA on an OCP on-premises environment

By Michael Oliva posted 2 days ago

  

Releasing in IBM Robotic Process Automation (RPA) 30.0.0, OCP version 3.0.0, is the ability to seamlessly integrate and run RPA Project’s as Skills in IBM watsonx Orchestrate OCP on-premises. This blog will run through the process from a high level, highlighting key parts of the integration process, if you would like to integrate these products yourself then please refer to the RPA documentation for a complete step-by-step guide.

This blog is focused on the RPA side of the setup and assumes IBM Cloud Pak for Data (CP4D) with watsonx Orchestrate is already installed and running in the environment. My cluster is configured in a multi-namespace pattern where the cpd-operators namespace will only contain operators and the cpd-instance-1 namespace will be where instances are provisioned. For RPA integration you do not have to follow this pattern, the same process can be followed for RPA installed in any desired configuration, including on an entirely separate cluster.

Installing the RPA Operator

In this blog I will copy the CP4D multi-namespace deployment style and install the IBM RPA 3.0.0 operator in the cpd-operators namespace with the intent to watch an instance in the cpd-instance-1 namespace. This deployment style is supported by the RPA operator, but not by the IBM MQ operator which is a dependency. To resolve this, I will install the IBM MQ operator manually in the cpd-instance-1 namespace. Equally, the IBM MQ operator can be installed in the global namespace to work around this limitation.

The following screenshots highlight where my operators are installed.

The following screenshot shows the IBM MQ operator installed separately in the cpd-instance-1 namespace.

Once installed, create an instance of RPA Custom Resource (CR) in the instance namespace, ensuring the .spec.zen.managed is set to false. Refer to the RPA CR documentation for full configuration details. Once created, wait for the RPA instance to install before proceeding.

Configuring Certificates

Both RPA and watsonx Orchestrate will attempt to verify each others certificates on their respective endpoints. If either service is not configured with a well-known CA (i.e., not self-signed), then it is necessary to configure each service to trust the others CA certificate.

Injecting RPA’s CA certificate into watsonx Orchestrate

Injecting RPA’s CA certificate into watsonx Orchestrate is driven through the CPD-CLI tool, where the tooling expects a well-name Secret cpd-custom-ca-certs to exist in the cpd-instance-1 namespace, which contains the RPA CA certificate. The following screenshot shows the RPA CA cert copied to the well-named CPD CA certificate Secret.

Once configured, you can use the CPD-CLI tool to inject the certificates into all required pods. Refer to the RPA documentation for the step-by-step guide. Once completed, listing the injected pods should look as follows:

Configuring RPA to callback to watsonx Orchestrate

From watsonx Orchestrates perspective, RPA will respond to the Project invocation via the Digital Employee (DE) server Route. So, we need to configure RPA to trust this callback address, this is all contained within the RPA Control Center. As the tenant administrator, create a new "Security setting" entry which contains wildcard route of the DE server Route as defined in your cluster. Next, supply the DE TLS certificate from the wo-digital-employee-server-tls-secret Secret to configure this callback for secure communication.

The following screenshot shows the DE callback route configured in my cluster on the RPA Control Center.

Creating a Simple Input/Output RPA Bot

For the purposes of this blog, I will just create a simple input/output bot to demonstrate the capabilities of integrating RPA into watsonx Orchestrate. The following script takes an input value and simply concatenates it to the string “Hello, “, which will demonstrate a variable being passed from watsonx Orchestrate to RPA and then returned by RPA to be displayed in the watsonx Orchestrate Chat.

The script I have used is the following:

defVar --name input_name --type String --parameter 
defVar --name output --type String --output 
concatTexts --text "Hello, " --value "${input_name}" output=value

Now I have a script, I will publish it in the RPA Studio, ensuring that it’s flagged as both schedulable and a production script.

Back in the RPA Control Center, create a Computer Group with one or more active runtime computer in it, this will be the pool for workers than can run the Project.



Next, I will create a Project for running this script.

I will then create a Bot in the Project for running my “Hello, World” script and assign it to my active Computer Group.

That's all the setup required for RPA! At this point I like to manually run the Project from the RPA Control Center just to verify everything is configured correctly. Once happy, we can move onto importing the Project into watsonx Orchestrate as a Skill.

Importing RPA Project’s into watsonx Orchestrate

I will use the Skill Discovery approach to importing my Projects, this is an API which can bulk import all my RPA Projects into watsonx Orchestrate in one go.

The following screenshot show the configuration required to connect watsonx Orchestrate to my RPA instance via the dedicated API server route.

Once authenticated, the Skill Discovery service will find all of the available RPA Projects that can be imported into watsonx Orchestrate.

Once imported, I can enhance the Skill to provide authentication credentials, as well make other adjustments to the Project such as changing the variable names. Once happy, publish the Skill so it can be used in the watsonx Orchestrate Chat.

Running RPA through watsonx Orchestrate

You're all set to run the RPA Project as a skill in the watsonx Orchestrate Chat!

At this point, we're all setup and ready to start developing RPA automations as part of your watsonx Orchestrate workflow! The RPA script we've created for this blog is intentionally simple to allow us to focus on the end-to-end configuration process of the two products, but don't let limit the power of this integration. Once RPA is part of your watsonx Orchestrate workflow, you'll be able to dive into scalable automation that's triggered at your fingertip.

0 comments
19 views

Permalink