You are on page 1of 25

openSAP

Enter Next-Level Bot Building with SAP Intelligent


RPA 2.0
Week 2 Unit 1

00:00:05 Hello, welcome back for week two. In this unit, we introduce the cloud studio.
00:00:14 First, what the cloud studio looks like. The Project Explorer panel located on the left
00:00:21 in which all artifacts will be displayed. The tabs - each time an artifact is opened,
00:00:29 the corresponding tab will be shown here. The toolbar -
00:00:34 depending on the artifact type, different options or buttons will be available. The main canvas
or the main screen.
00:00:44 At the bottom, the console - in this area, errors and information will be centralized, collected,
and displayed.
00:00:53 We mentioned artifacts - there are two kinds of use cases that cloud studio can cover.
00:01:00 Put together different packages, automations, or scenarios. In this case, we are talking about
assemble -
00:01:08 typically it is for designing a long-lasting process by reusing existing desktop packages.
00:01:16 On the other hand, you can directly create automation - typically, we would capture
applications and design automations.
00:01:24 Obviously, automation is not only a sequence of simple steps - some logic can be included,
such as condition or loops.
00:01:33 This will be our focus for this presentation and the coming days. Let's have a look at the
automation editor.
00:01:42 You need to click on Create Automation. A dialog will be shown to enter the friendly name of
your automation
00:01:50 and a unique name of your automation. You can specify the description and decide whether
this automation can be triggered.
00:01:59 Within the automation editor, we have the navigation tab, the toolbar, the canvas, and the
automation information.
00:02:11 Within the application capture, when you add a new application screen, we have the
navigation tab,
00:02:19 we display all detected applications on the left. At the center we display a screen preview,
00:02:27 and the screen information is available on the right. Once an application is captured,
00:02:35 on the left, we display the application screens. Still on the left but at the bottom,
00:02:41 for each screen, you have the list of declared elements. Within the canvas, in the middle,
00:02:49 the capture screen application is displayed. And on the right, the screen information is
available.
00:02:59 Let's have a look at the capture UI element. Each time you click on a declare element,
00:03:05 the Element Information panel is updated on the right. In addition, you have extra actions
available within the toolbar.
00:03:15 Some important information about capture data - captured data displays a list of potential
criteria.
00:03:22 Criteria are required for the recognition algorithm. We will cover it later, but in short,
00:03:28 the criteria are used for identifying applications, screens, and UI elements. Thanks to the auto-
recognition mechanism, you won't need to do it one by one.
00:03:40 However, there are cases in which you need to add more criteria for ensuring the UI element is
properly recognized.
00:03:47 And this is the purpose of captured data, which we will use for building the criteria.
00:03:55 We will end the review with a data type. Data types are here to define the data structure
00:04:01 you will use for building your automation. Consider the data type as a backbone of your
automation.
00:04:10 Once you start your data type, we will show the navigation tab and the toolbar.
00:04:15 Specifically, for the data type you have fields list and data type information. Within the field list
for a given field,
00:04:26 we will display the properties, such as type, a sample value, and whether the field is a list or it
is required.
00:04:36 Now, let's do a quick "hello world" demo. For our first example, we are going to create a new
project.
00:04:47 So we go here, New Project, we call it "openSAP Hello World". And we create.
00:05:02 So, okay, we have nothing for now. So let's have a look here so we can go to Automation.
00:05:11 So the agent has been detected. So we select this one, which has been created.
00:05:20 I confirm, so we create a name, which is Hello World. Click on Create.
00:05:31 So now the SDK has been added in our system, and we see we have for now nothing.
00:05:37 So we can maximize the screen. So we have the different automations, so we have nothing,
00:05:46 the different activities, we have nothing for the data,
00:05:50 and we have some predefined controls. So what we are going to do is we are going to add a
message.
00:06:01 So we have here the Open Message Dialog, so we drag and drop this one. We click on it and
we have some dialog parameters.
00:06:13 So go here. We can just say "Hello Intelligent RPA".
00:06:26 Okay, that's it, we have a template, so we can just say "Ok", and we save it.
00:06:36 So now, a very basic workflow is being created, so we just need to save.
00:06:45 And we can hit Test to test it. So what is going to happen?
00:06:52 So we need to select an environment, which is why it's important to create an environment
first,
00:06:58 and we click on Test. So the very first time it will take a couple of seconds to launch the agent,

00:07:08 which is not here, it has to download the SDK within the agent.
00:07:17 And that's it. And I have now the message, which is "Hello Intelligent RPA".
00:07:25 So I just need to click Test again. We click on Test.
00:07:31 And after a couple of seconds, the agent and the rest has been triggered - that's it.
00:07:37 So as we can see, it's very fast to create your first bot and to say just "Hello". Now, let's
capture a simple application and use it within an automation.
00:08:03 For our second demo, we are going to capture an application.
00:08:07 So we start from Hello World, we launch the calculator, and we go now to Application.
00:08:16 So we need to select the calculator. Like this one.
00:08:24 We click on Capture. Okay, so the application is now captured,
00:08:41 so we can now maximize the screen to see what happens. So we have the different elements
that we can see - 4, 2, and the text area.
00:08:53 So what we are going to do is to capture this one. So declare the button 4,
00:09:00 we declare the button 2, and what is interesting is to take this one,
00:09:07 which is text container. So we can keep it as textResult.
00:09:18 And we can paste here. And we declare it.

2
00:09:26 So we have the two buttons that we've captured, plus a text result. So we can save.
00:09:37 So what we can do right now is to test this application right away, so even before starting to
modify the automation.
00:10:08 So we have the calculator, and we see the result in it,
00:10:12 so we see the number 4, the number 2, and the text result. Those are different elements.
00:10:23 So number 4, number 2, so we can click on it.
00:10:33 And this is our result. Okay.
00:10:37 So this is fine, so we can stop this one.
00:10:45 We can go back to the calculator. We can skip it for now, and we go back in the Hello World.

00:10:55 So application now the has been captured and the screen should appear here, as we can see.

00:11:01 So we just need to drag and drop the calculator. And we can go to Define Screen Activities.
00:11:09 Click maximize to have more room. So we define the screen activities.
00:11:16 And we see the different buttons that have already been captured. So maybe what we can do
is to evaluate a click button.
00:11:27 So we have the Click element. We can go here.
00:11:33 The button 4. The button 2.
00:11:38 And maybe what is useful is to get the result here, so we go to Get Element.
00:11:49 And that's it. Well, not completely.
00:11:53 So usually what is a good practice is to add a wait. But in this case,
00:12:00 we are adding the wait element, the wait change, so what does it mean? So it means that if we
go on this element,
00:12:07 the button 4, for instance, and the button 2... In fact,
00:12:16 what we say, it's going to change the wait element. Now, finally what is best is to use this one.

00:12:26 So instead of using the number 4 or the number the best thing is to select the textResult here
00:12:37 and the textResult here. So it means that each time the button is clicked here,
00:12:49 the system will watch to see what's happening. So it will inspect what has been updated.
00:13:00 So we see the result. And at the end, we've got the get element,
00:13:06 so the get element is a text. So maybe it's best to have the result.
00:13:16 And in the end, what is useful now is to show a pop-up now.
00:13:29 with the result. So the result is simply
00:13:35 the message, which is TheResult, and that's it.
00:13:42 Okay, so let's summarize. We have our Hello World that we've created before,
00:13:47 we launched the calculator, for which we are going to click on different elements here.
00:13:53 We wait the different elements and we click. So a good practice also is to put some meaningful
step names,
00:14:04 so "Click 4", "Click 2".
00:14:16 And we can just keep the wait change by default. Okay.
00:14:27 So we save. And let's have a look at the result...
00:15:01 So we've got the first element message, which is "Hello Intelligent RPA". And we have the
result, 42.
00:15:12 So we can click again, and the result will be most likely the same, except that we then put the
C.
00:15:19 So it's going to be... 4,242, that's it.
00:15:28 Okay, so in this case, as we can see, holding the calculator and adding automation is very
simple.

3
00:15:38 And that's it for this example. And for our last demo, we will add some logic to it.
00:15:52 For our last demo, we'd like to do some condition and some controls.
00:15:57 So typically we are going to take the repeat. So we need to drag this activity.
00:16:05 We use the click that we added before, and we see there is some starting value and ending
value.
00:16:14 So we can start with 1 and repeat from 4. But what would be nice is maybe to add as a
parameter.
00:16:20 So we go here, we are looking for the input. So we add the Open Input Dialog.
00:16:31 And we say, "How often?" We simply add "Ok".
00:16:43 And we save this input, so we've got an input value. A good practice is quickly to add some
variables.
00:16:54 So let's say that we would like to have the "Any" type of variable. So we are going to say that
this variable
00:17:08 will be derived from the input dialog. So we put howOften as our output.
00:17:19 And this one is input that we provide from the open dialog input. So we name it
00:17:30 TheValueFromCustomer, That's it.
00:17:38 So the valueToAssign we put here, so we can go to TheValueFromCustomer.
00:17:45 And this value, we can now reuse here as a starting value, which is going to be 1.
00:17:53 And we are going to use howOften to define how often this value will be repeated. So we plug
this message with open,
00:18:05 we open the input dialog, we assign the value, and we are going to repeat
00:18:13 howOften, the click 4, and the wait change. So let's see what happens here, so we save.
00:18:22 And we click on Test. We select our environment.
00:18:29 We click on Test. So we've got the "Hello Intelligent RPA".
00:19:03 The system is asking for how many times, so let's say three times. And the button will be
repeated three times,
00:19:12 and we've got the result. And that's it.
00:19:15 So we can test again. Just need to reset here.
00:19:26 Hello. Maybe we'll need to have five times.
00:19:35 And that's it. So it's fairly simple to repeat an action.
00:19:42 And that's all for the demo. Thank you.
00:19:51 I hope you enjoyed the presentation and the demos. Stay tuned with my colleagues for more
information about the cloud studio.
00:19:59 Thank you.

4
Week 2 Unit 2

00:00:06 Hi, everyone, I'm Yannick Besnehard, I'm a software developer for the project SAP Intelligent
RPA.
00:00:13 Today, what I will present to you is how to build automation in the new cloud studio. But first,
let's discover what is in automation.
00:00:22 An automation is a sequence of steps that allows you to automate multiple applications on a
specific computer.
00:00:31 So, for example, if you have a repetitive workflow for one of your applications, you can use
automation to automate it.
00:00:39 You can also pilot multiple applications and even Excel files. If you already use our previous
version,
00:00:47 the equivalent to automation was called scenarios. And like for scenarios, you can execute
automation
00:00:55 either in attended or unattended mode. To design automation in the new cloud studio.
00:01:03 We need to use what we call the automation editor. So let's see that in detail.
00:01:11 The automation editor is composed of four main parts. The first part, at the top, is called the
toolbar.
00:01:18 The toolbar is composed of different actions, very simple actions like undo, redo, deleting a
step, saving your automation, or even testing it.
00:01:31 The most important part of this automation editor is called the graph flow at the center of the
screen.
00:01:37 This graph flow is showing you the list of the steps inside your automation. When executed,
the automation will execute,
00:01:48 one by one, each step from the top to the bottom. To add steps to your automation, you need
to use the right-side panel.
00:01:59 We'll see that in the next slide, but here you can pick different controls, screens, or activities to
add in your graph flow.
00:02:08 At the bottom of the automation editor, you have what we call the console. The console allows
you to see the different errors for your automation
00:02:18 while designing it or while testing it. So, let's see in detail what the right-side panel contains
and what we can add in an automation.
00:02:30 You can add multiple things. First, you can add also automation that has already been built.
00:02:39 This automation can come from you, if you already built one, from colleagues, or even SAP.
00:02:47 You can also use captures of applications you captured on your computer. So, let's say you
have an application and you want to automate it.
00:02:58 You create a capture, you will see that in week three and then you will be able to interact
00:03:05 with your capture inside the main flow of the automation. You have access also to what we call
the activities.
00:03:13 These activities come from the SDK packages from SAP. These activities are simple actions
that you can do in your automation.
00:03:26 It can be from using the file system, using an Excel file or piloting an application.
00:03:35 We see that in detail in the next slide or so. You also have access to data types if you want to
structure data or reuse variables.
00:03:47 And last, you can use what we call logics and controls. With that, you can use condition loops
inside your automation.
00:03:57 You can even write your own JavaScript code if the provided activities by SAP are not enough
for you.
00:04:06 So, how do we build an automation? An automation is built with, like I said, activities.

5
00:04:17 So those activities come from different packages provided by SAP. By default, when creating
an automation,
00:04:26 you have access to the core SDK and the Excel SDK. The core SDK contains activities
00:04:34 to manipulate screens or even the file system and a lot of other activities. The Excel SDK
contains activities to manipulate an Excel file,
00:04:48 like getting data from an Excel file or setting data in specific cells. So those are the two
packages added
00:04:57 by default in the automation, but you can choose to import new ones provided also by SAP,
like Word, PDF, or Outlook.
00:05:09 In those packages you will find activities to manipulate Word files, PDP files, and the
application Outlook.
00:05:18 So, when creating an automation inside the cloud studio, you need first to configure the agent
version.
00:05:26 The agent version corresponds to the minimum version of the agent you need to use to
execute your automation.
00:05:35 So when creating an automation, you have this dialog popping up and you need to choose the
version of the agent.
00:05:44 If your agent is already being connected to the cloud studio, a default version, the current
version of your agent will be selected by default.
00:05:56 But you can choose another version if you want. Choosing this version can also filter
00:06:02 the list of available activities inside the automation editor. Then once your automation is
created,
00:06:13 you can use the right panel, select the different activities, automation, and controls and drag
and drop them into the main flow.
00:06:23 This will add a new step and those steps will be executed from the top to the bottom.
00:06:34 Also, what you need to know is that the steps of an automation can have inputs or outputs or
steps can take as an input different variables, the text, numbers, or even complex data type.
00:06:53 But it can also produce new ones. So we need to configure that also
00:06:59 in the right panel by clicking on a specific step in the graph flow. You can set for an input,
00:07:08 you can set either an existing output coming from the previous step or a static value. But we
will see that in detail in the next session.
00:07:20 So to understand more about automation, let's see a demo on how to build your first
automation.
00:07:28 So, to build my first automation, first I need to create a new project, I will call it My First
Automation.
00:07:42 This will open, in a new tab, the cloud studio. In the cloud studio, on the left,
00:07:49 you have to select Create and then Automation. So like I said, when selecting create, we have
to configure the agent version.
00:08:00 So I click on the combo box and here I can see that I have my agent already connected to the
cloud studio and that it is of the version 2.0.7.
00:08:14 I will select it and confirm. I need to choose the name for my automation,
00:08:21 and I think My First Automation would be a great name. I click on Create.
00:08:28 While creating the automation automatically behind the scenes, we are importing the two
default SDKs.
00:08:39 So here now if I click on the Dependency tab of the project, I can see that I have the irpa_core
dependency and the irpa_excel dependency.
00:08:51 Those SDKs will contain, like I said, the different activities to manipulate a simple automation
or an Excel file.
00:09:01 Now, let's see. I have the toolbar at the top,

6
00:09:06 the graph flow at the center, the console at the bottom, and the right panel. In the right panel,
like I said, I will find different activities.
00:09:15 So if I unfold it, I have access to all the activities coming from the packages.
00:09:22 There are a lot of activities, that's why I advise using the search. For this demo, what I will do
is I will use an Excel file,
00:09:32 an invoice coming from an Excel file. So let me show you this Excel file.
00:09:37 In this Excel file, I have a list of products that I have bought, with the name of the product,
00:09:44 the category, the quantity I have bought, and the price of the product. So what I want to do as
a first automation
00:09:52 is take each line of this invoice and create a beautiful text to explain what I have built inside the
other sheets present in this Excel file.
00:10:06 So for that, I need to use Excel activities. So I'm typing Excel in the search
00:10:14 and I can see all the activities to use with an Excel file. So first, what I need to do is open
Excel, because if I don't open Excel,
00:10:27 I won't be able to do anything with an Excel file. We have available as a specific activity
something called the Excel Cloud Link.
00:10:40 The Excel Cloud Link activity allows you to extract data in a simple way from an Excel file.
00:10:49 Like I said, I need to do an action from each line of my Excel file, and with this Excel Cloud
Link I will be able to do that.
00:11:01 So I will double click on it and I will configure it.
00:11:06 You can see that I need to choose as a reference the Excel file I will extract the data from.
00:11:14 I click on browse, I select my Invoice file, and here automatically you can see that it has
detected the Excel range where the data is coming from
00:11:29 and that I have four different columns. To use correctly the data are coming from this Excel
file,
00:11:38 I will create a new data type directly from this activity. I won't go into the details of that, it will be
shown in a future presentation.
00:11:50 So, what I will, I will create a new data type from the accelerator. So I'm clicking on this button
and I choose a name for my data type.
00:12:00 So I will just call it Invoice Line because one instance of my data type will just represent one
line of my invoice.
00:12:11 Click on Create. So automatically if I open the menu on the left,
00:12:16 I can see that I have a new data type created automatically called Invoice Line. This data type
contains one property for each column in my Excel file.
00:12:28 Let me reopen the automation, and the last thing I need to do for this activity is choose the
path of my Excel file.
00:12:39 So, my Excel file is on My Computer, /Invoice.xlsx. So now this activity has been correctly
configured,
00:12:55 I can close it, and now you can see if I click on the step, I have one output, this output, called
returnedValues.
00:13:08 This output contains all the data coming from my Excel file. It's an array, and for each array it
will contain one invoice line.
00:13:18 So what I will need to do is loop through each line of my Excel file to create a beautiful text
representing the line.
00:13:30 So for that, I need to use a control called the For Each. I won't go into the detail in the For
Each, it will be in another session.
00:13:43 But what you can know is, as an input of the For Each, I will pass the value coming from the
Excel Cloud Link activity.
00:13:53 So now, what this For Each will do is it will repeat, for each line of the Excel file, different
steps.

7
00:14:03 So, what I want is for each line of my Excel file to create a new line with a beautiful text.
00:14:11 So for that, I need to reopen my Excel file, because what you don't know is
00:14:19 that the Excel Cloud Link will close the current file we get the data from and we will want to
reopen it to put new data inside it.
00:14:29 So I will open a workbook. For that, I need to set the path to my Excel file.
00:14:44 And then I said I need to put the data in this worksheet. So I need to select the worksheet
called Text.
00:14:55 I will use for that the activity called Activate Worksheet. That is just expecting the name of the
worksheet.
00:15:02 So I type Text. And now that my Excel file will be open, the sheet Text will be open,
00:15:14 I can loop through all my different lines coming from my Excel file. What I will do is for each
line I will create a new line in my second sheet.
00:15:29 So for that, I need to say that I will set the value of my line here. So, for the first line here, the
Flat Watch HD32, I will enter a line here in A1.
00:15:46 For the second line, Flat Watch HD41, I will enter a text into A2, and so on. So for that, I need
to use the Set Values,
00:16:00 and here I need to say in which cell I want to put the text. So for that, I need to build a simple
expression, we will see that in detail in another session,
00:16:13 but I will say I will put the new value inside the column A, and I need also to specify the
number of the line.
00:16:25 So for that, I will use something called the index. That is the current index of the invoice line
I'm looping on.
00:16:34 We will see that in detail in the next session, don't worry. If it's too complicated, don't worry,
00:16:40 we will see all the details soon. I need to specify the index, and I am adding one because the
index starts at zero.
00:16:53 I'm saving, and now what I want to put in this cell is, like I said, a text explaining what I wrote.
So I'm typing a text, I bought,
00:17:11 let's say, the quantity of the current line, I will say what products,
00:17:24 and let's say the price. So this is a simple expression, we will see that in detail in the next
session also,
00:17:42 but I'm simply building a text from different data coming from my Excel file. So, I save my
expression and now I can save My First Automation.
00:17:57 Once it's saved, now I can simply test it. And since the first step is opening my Excel file,
00:18:03 what I will do first is here close my Excel file. When clicking on Test, what we will see, it will
open the Excel file.
00:18:13 It will get the data from the first sheet. And for each line of the first worksheet
00:18:19 it will create a new one in the second worksheet. So, let's execute it.
00:18:29 For that, to execute that, I need to select an environment. I select my environment.
00:18:35 This environment should be first created in the factory. Now, the package is generated, it's
deployed to the desktop agent,
00:18:48 and the desktop agent will execute my automation. So now you can see, Excel is opening,
00:19:02 and for each line of my Excel file, I have a brand- new cell that has been filled. So the first one
I bought one Flat Watch HD32 for this price,
00:19:17 then I bought one Flat Watch HD41 for another price, and two Benda laptops for another price.

00:19:26 So you can see here that it's pretty simple. You can see in these results also that here the
price is wrong,
00:19:39 but maybe that's because I didn't set the right data, so I can fix that. I will just select the right
data, click on the price,
00:19:55 close it, and I can retest it. Save and Test.

8
00:20:03 As simple as that. So it will redeploy the package with the fix,
00:20:08 in through the agent, and it will reopen now the Excel file, and write, again, the correct value.
00:20:25 Here, now you can see I have one line for each previous line, but the price is correct because
I've done the fix.
00:20:34 So, with automation you can build, like I showed you, simple interactions with Excel files, but
way more complicated workflows like interacting between applications.
00:20:48 In the next session, what we will see is how to work in details with inputs and outputs.
00:20:54 I've used them in that demo today, but you will see that in detail more in the next session.
Thank you very much, goodbye.

9
Week 2 Unit 3

00:00:05 Hi, everyone, welcome back to week two about building automations. Today, we will see what
data types are, and how to use them as inputs and outputs
00:00:16 for your automation and for the activities inside your automations. So what are data types?
00:00:24 First, what you need to know is in the cloud studio we have three simple types. The first one is
string, which represents a simple text,
00:00:34 then you have the numbers, and then the Boolean value. The Boolean value can be either true
or false.
00:00:42 To build more complex data, you have to use what we call data types.
00:00:47 A data type is a way to structure your data and pass this information between the steps of your
automation.
00:00:55 You can either create a new data type in the cloud studio or reuse one data type already built
in in the SDK packages.
00:01:05 To allow more flexibility around data types, we have also a type called "any"
00:01:10 that allows you to represent any type existing. It can be either a simple type or a complex one.

00:01:19 So if you want to have flexibility between the steps up your automation, you can use this "any"
type.
00:01:25 So how do we create a data type inside the cloud studio? First, a data type is composed of a
set of fields.
00:01:35 Each field is represented by a name, which is the name of the field, and an associated type.
00:01:44 The associated type can be either a simple type, so a string, a number, a Boolean, or it can be
another complex type
00:01:53 that you already built or that is coming from the SDK packages. So to show you that, let's go
for a demo.
00:02:02 We are back now in a brand-new project inside the cloud studio. To create a new data type,
00:02:08 I go on the left menu here called Create, and I select Data Type.
00:02:14 For the demo, I will create a data type called address, and then I click here Create.
00:02:20 This opens the data type editor. And as you can see, for the moment, my data type has no
field.
00:02:28 So, what is defining an address? Let's say, for the purpose of this demo
00:02:33 that an address is first composed with the name of the city. So I clicked on New Field.
00:02:41 It creates a new field. I type the name "city", and the type by default is a string.
00:02:47 That's convenient because here the name of the city is a simple text. Also an address is
defined by the street name.
00:02:56 So let's type "streetName". You see that there are restrictions for the names of your properties.

00:03:04 You can't have any spaces in the name of the properties of the data type. That's why I wrote
street name like that.
00:03:13 Then what we will do is create a last field called streetNumber. And select the type here,
Number, the simple type called Number.
00:03:32 Now, I have just created a simple data type that has three fields representing a street address,
so let's save it.
00:03:44 But I can also create now a new data type that represents a user. So let's go back to the
Create menu, click Data Type, and select User.
00:03:57 This user will be represented by a field, let's call it... This user has a name,
00:04:05 so let's call it just "name". But a user can also have, let's say, an address.
00:04:12 But since I already built a data type called Address, I can here reuse it in my data type User.

10
00:04:20 So I click on New Field, I choose as the name Address,
00:04:28 and here I will select the complex data type I built called Address. And now you can see that
automatically my data type has imported the Address data type,
00:04:43 and my user is defined by their name, but also by their address. An address has three fields -
city, streetName, and streetNumber.
00:04:55 So you can now build up complex data for your automations very simply with this data type
editor.
00:05:04 So let's go back to the slides. We saw how to build data types inside the cloud studio.
00:05:10 We have now to use them and consume them as inputs and outputs of your automation. When
you define an automation, a workflow to automize,
00:05:22 your workflow can expect some inputs, but also have outputs. So let's say you are sending a
mail to someone.
00:05:32 Like we built a mail data type just before, your automation can expect a mail as an input.
00:05:40 An output of this automation can be a Boolean telling you a confirmation that your mail has
been correctly sent.
00:05:50 So each output or input of your automation is defined by three things. First, a name,
00:05:59 so to have a name for your input, if you're sending a mail, the input can be simply "mail".
00:06:07 You have to select a type. Like I said, it can be a simple type or a complex one.
00:06:14 And you have to choose whether it's a list or not. For example, if your automation was not
sending just one mail, but a list of mail,
00:06:23 you just can click this checkbox called List and the automation would expect not only one mail,
but a list of mails.
00:06:36 When you define inputs and outputs for automations, it's the same as for the activities.
00:06:43 The exposed activities on the SDK are expected inputs and you can have outputs at the end of
the execution of this activity.
00:06:55 So when selecting a step inside your graph flow, you will see on the right-side panel some text
fields to fill the inputs expected by your activities or your automations,
00:07:09 and you will see read-only fields that are the outputs of your step. To fill the expected inputs
you have to choose
00:07:22 either an existing variable that is coming from the outputs of your previous steps, or coming
from the input of your automation.
00:07:33 You can also fill a static value. If it's a simple text, you just type the text, but if it's a more
complex data type,
00:07:43 you have a specific editor to create a static, complex object. But you will see that next week.
00:07:51 You can also use what we call the expression editor to write complex expressions, to define
either a text or an output as a number or Boolean.
00:08:06 So let's see that more in detail in our demo. We are back in the cloud studio for this demo.
00:08:15 You can see that on the left I still have my two created data types, Address and User. What I
want to do for this demo is to send a mail to a specific user,
00:08:28 but I only have the ID of their user. So I will use an automation that I already built
00:08:38 that allows me to get the user information from their ID. I will also use another automation that
is able to send a mail to a specific user.
00:08:50 Obviously, I won't send a real e-mail to a user. What I will do is I will just write into the console

00:08:59 that I am sending a mail to this user. So first, let's see what are
00:09:06 the two automations available here in my project. The first automation code "Get User From
Id" is pretty simple.
00:09:15 I click on the "I/O" tab here, and I can see that this automation is expecting one input called
"id", which is a simple string

11
00:09:27 and has one output called "user" and that is of complex type "User". So if I provide to this
automation the ID of a user,
00:09:38 it would give me all the information of the user, their name and their address. So I have
another automation that is sending a mail to a user.
00:09:50 If I go to inputs outputs of this automation, I can see that this automation is expecting a user as
an input,
00:10:00 with the user data type, and a message with a simple text as the parameter. It's also having an
output parameter,
00:10:11 telling me if sending the mail was successful or not. This automation contains two steps
00:10:19 that are simply logging information into the console. So when I'm using the activity log called
Log Message,
00:10:27 what it will do is it will write into my console here the information, the message I've written as
an input here.
00:10:38 So when I will execute that automation, it will write the address of the user and the content of
the message.
00:10:49 So what I want to do now is create an automation that takes as the input parameter one ID of
user and a message.
00:10:59 So let's click on Create, Automation, and let's call it "Send Mail to UserId".
00:11:11 I click on Create. And now I can see on the right side that I have access to my other
automations.
00:11:25 What I can do is first retrieve the information of the user from the ID. So I drag and drop the
automation in my mail flow,
00:11:36 and I can click on the step to configure it. Here you can see on the right that I have the
information from this step,
00:11:45 the name of the automation, but also the expected inputs of these steps and the generated
outputs once this step is executed.
00:11:57 So I can see that this automation is expecting an ID. So what I will do is I will provide the ID by
inputting it by hand.
00:12:11 So the newly created automation will need a new input called ID.
00:12:19 So I go into the input/output ("I/O") tab and click on the "Add new input parameter" button.
00:12:29 Here I can select the name of my input - so I will call it "userid" - and the type. So the user ID is
just a simple string, so I will leave it as a string.
00:12:45 Next, what I want to do is to pass the information from the inputs to my automation to step one.

00:12:54 So I reselect step one, and here in the text field called "id" I will click on it and it will just
suggest to me the possibilities I can do.
00:13:08 So I can either choose the inputs coming from my automation called "userid",
00:13:16 put an empty text, or I can write a static ID, "myid". Here, what I want to do is I just want to
pass the information from the inputs of my automation
00:13:30 to step one, so I will select "userid". The number 0 here tells me that
00:13:38 the user ID is coming from the inputs of my automation. I click on it - and voilà -
00:13:46 I'm just passing the information from the inputs to step one. Now I can see that my step one is
generating one output called "user",
00:13:58 and that's convenient because I want to send an mail to a user, so I will use my other
automation called "Send Mail to User",
00:14:09 click on it, and see that this automation is expecting two input parameters. It's expecting a user
and a message.
00:14:20 So I just click on user and here I see that I also have some suggestions. I have the user
coming from step one with the number 1
00:14:32 that you can see in the graph flow here, and I have the "userid".

12
00:14:38 Here, the "userid" is grayed out because it's not compatible. The data type of "userid" is string

00:14:45 where here the input is expecting a complex data type called "user". So you can't put "userid"
inside this input.
00:14:53 Here I will select "user". And I see that my step two is also expecting a message.
00:15:02 This message will come from the inputs of my automation, also. I will put in the message by
hand while executing my automation.
00:15:13 So I have two choices - either I can go back to the input/output ("I/O") tab here of my
automation, and click on "Add new input parameter"
00:15:24 or I can click on my step here, type, let's say, "myMessage".
00:15:31 And here I have a suggestion with a "+", telling that this will create a new input for my current
automation.
00:15:40 So if I click here on "myMessage", you can see that now here as an input, it's taking a variable
code.
00:15:48 "myMessage" coming from step 0, so from the inputs of my automation. So if I go back here to
input/output ("I/O"), it created automatically
00:16:01 a new input called "myMessage" of the type "String". So now I have an automation that takes
as inputs a user ID and a message,
00:16:14 and it will first get the user information from the provided ID, and then send the mail with the
user information I get from this ID.
00:16:28 So. Let's test it - I save,
00:16:33 I click on Test, I put the user ID "detective"
00:16:41 and my message would be, "Hello Detective how are you?" And I will just simply click on Test.

00:16:57 It's deploying my packages to the agent, and the agent will simply execute my automation.
00:17:12 Now, you can see that my automation has been successful. And if I go to the console, like I
said, I have the mail that has been sent.
00:17:22 So I have the information of the mail, "Sending mail to Sherlock Holmes at 221 Baker Street in
London",
00:17:31 with the message, "Hello Detective how are you?" So you have seen that giving just a user ID
and a message allows me to retrieve
00:17:43 the user information - here the user ID "detective" is giving me the information of Sherlock
Holmes, and passing a message,
00:17:52 I'm able to send a mail to this user ID. So that's how you use inputs and outputs inside
automations.
00:18:02 It's just simple information transfer between steps or inputs of your automation.
00:18:10 In the next session, we will see how to use more complex workflows with different controls.
00:18:16 Thank you for attending this session.

13
Week 2 Unit 4

00:00:05 Hi, everyone, welcome back to week two about building automations. Today, we will see the
different
00:00:12 additional patterns available in the automation editor. So, we saw that in an automation, you
can use automations, activities,
00:00:23 screens, and data types, but you can also use additional logics and controls. You have five
different kinds of controls available.
00:00:35 You have first the conditions, then you have three different kinds of loops. And finally you have
the custom scripting.
00:00:43 In this session, we will go through all those controls one by one. Let's start with the conditions.

00:00:50 The conditions allow you to have multiple outcomes depending on one Boolean expression.
00:00:57 So let's say you have a variable to test - a specific date or the name of a user. Depending on
the date or the name of this user,
00:01:10 you can have different steps to execute. That's what the conditions are for.
00:01:17 Depending on one Boolean expression, having multiple outcomes. If you want, in a condition
you can add multiple expressions.
00:01:27 So you are not limited to two branches. You can have any number of branches you want.
00:01:33 You can also put a condition inside another condition if you want. To the conditions, you can
also add some outputs.
00:01:44 So, for example, if you need to have one output that depends on which branch you get into,
you can define it.
00:01:52 We will see that in the demo. And finally, you can also insert what we call an exit loop
00:01:59 inside one of your branches. These exit loops allow you to exit the automation successfully.
00:02:08 So let's see a demo. So for this demo, I will create a brand new automation.
00:02:15 I will select the agent version, type "Condition" as a name for my automation, and I will take a
simple use case.
00:02:27 What I will do is I will have an automation that takes a date of birth as an input parameter
00:02:36 and tells me if this date is valid or not. For simple, general purposes,
00:02:42 I will take just a year of birth and test the different values. So first, let's go to "I/O",
00:02:52 add an input parameter, and call it "yearOfBirth". Since it's just a year, I will select the type
Number.
00:03:03 And back in Tools, you see that under the Tools tab I have this Controls category, and under
the Controls category
00:03:14 I have all the controls I talked about. What I will use for this demo is the Condition control.
00:03:20 I just drag and drop it into the flow. You see that this Condition control gives me two different
branches.
00:03:29 If I click on it, I will be able to set a condition expression here. And if this condition expression
is true, then I will go into the first branch,
00:03:42 and if it's false, I will go into the second branch. I can also add steps before and after the
condition.
00:03:54 So what I want to do is to create a new Boolean expression for this condition. So I click on
"Open the expression editor".
00:04:03 And here I will just simply do a test on my year of birth. So I take my variable "yearOfBirth"
00:04:12 and I will check if this year of birth is before If it's before 1900,
00:04:25 the person cannot exist because there are not any existing people that old. So I will just show
a message telling me that it's an invalid date of birth.
00:04:36 So I set the expression, I will then choose an activity,

14
00:04:44 to write a message, a simple message. So I will log a message here, and I will say,
00:04:54 "Invalid Date: too old", let's say. Then,
00:05:07 so I get in this first branch if my year of birth is under 1900. So if it's above that, I will
00:05:20 go into my right branch here, my default branch. So my default branch, I will log a new
message called
00:05:30 "Valid Date". And I will save.
00:05:40 Now I simply click on Test, select my environment, and choose the date of birth.
00:05:48 So if I choose a date that is before 1900, normally I should see a message telling me that it's
an invalid date.
00:05:59 So let's just test it and see what happens in the log. Now you can see that I have an invalid
dat.
00:06:25 So I correctly went in here, step two, that is writing to me that the data as an input is invalid.
00:06:35 So let's do another test with another value. So
00:06:40 I will put a correct date, and click on Test, and let's see what happens.
00:06:47 So here you can see I have a valid date. I went into the right branch.
00:06:54 So this is a simple case for conditions. But this is basically what you will do.
00:07:01 You will take your input data, test it, and go into one branch or the other. Like I said, I can also
add another condition.
00:07:11 So I select the condition, click on "Add Condition" here, and edit the formula. I will take my
year of birth, and if it's above 2021,
00:07:25 it's an invalid year of birth. You can't be born yet.
00:07:29 So I save my expression, and I will set a new message telling me that it's an "Invalid Date: too
early",
00:07:45 and save. So what will happen here is, first, my condition will test if the year is under 1900 -
00:07:58 if it's the case, it will go into the first branch. Then it will check if it's above 2021 -
00:08:04 if it's the case, it will go to the second branch. And if it's neither of those two, it will go into the
default branch.
00:08:14 You can also add output parameters for your branch. So let's say I want to have an automation
as an output to tell me if the date is valid.
00:08:25 So I add a new output for my automation. I will call it "isValid"
00:08:36 And say that it's just a simple Boolean. And now I will add an output for my condition.
00:08:44 And I will call it also "isValid". What I will do is now, depending on each case,
00:08:53 I will say what is the value of my output for my condition. So if it's in the first case, then the
date is not valid.
00:09:04 If it's in the second case, the date is not valid. If it's the final case, then my date is valid.
00:09:12 So I will input "true". And now as an output of my condition,
00:09:19 I have one output parameter called "isValid". And I will return
00:09:26 this "isValid" property to the output of my automation. By selecting it, by selecting the end node
here and selecting the "isValid" variable.
00:09:41 Now I have just built a simple automation that allows me to test if a year is a valid date of birth
for a living person.
00:09:53 Let's go back to the slide to see the loops. We will see now the three different kinds of loops,
starting with "For each".
00:10:01 The "For each" takes a list of items as an input parameter, and will go through each element in
the list to execute a series of steps.
00:10:11 Let's say, for example, that I have a list of users as an input parameter. It will take the first
user, execute a series of steps,
00:10:20 take the second one, execute a series of steps, and so on. By using the "For each" control, I
have access to two parameters.

15
00:10:30 The first one is the "index" that starts at 0 and is incremented one by one for each item of the
list.
00:10:38 And then I have the "currentMember" that represents the current item in my list. Then I have a
second type of loop, which is called "Repeat".
00:10:50 Repeat tells me to execute a series of steps a certain number of times. So let's say I have to
execute a series of steps three times,
00:11:00 I can use this control. This control is parameterized by two values - the starting value and the
ending value.
00:11:10 The number of times that this loop will be executed equals the ending value minus the starting
value, plus one.
00:11:19 Let's say, for example, I want to execute three times a series of steps. I will have as the
starting value 1, as the ending value 3.
00:11:28 So it makes it 3 minus 1, plus 1. That makes it In Repeat, I have access to one parameter,
which is the index.
00:11:41 The index starts at the starting value and is incremented one by one until it reaches the ending
value.
00:11:51 Finally, I have the "Forever". The Forever loop
00:11:56 is used to execute a series of steps until a certain condition is met. This condition is expressed
by a Boolean expression, like we saw before
00:12:08 with the conditions. If the Forever loop never reaches this condition,
00:12:15 it never ends and it only ends with a timeout. We will now see all three of those loops in a
demo.
00:12:26 For this demo around loops, what I will do is I will reuse the same use case as in the first unit,

00:12:33 but I will be able to describe to you what I've done with the "For each". So if you remember
correctly,
00:12:40 I had this Excel file, this screen being an invoice. And for each line of my invoice, I have
00:12:50 the product name, the category, the quantity, and the price. So if I go back to my automation, if
you remember correctly,
00:13:00 what I do is I open my Excel application, and then I use the "Excel Cloud Link" activity to
extract the data coming from my Excel file.
00:13:13 So at the end of the step two execution here, I will get, as an output, the list of "Invoice Line".
00:13:25 If I click on "Invoice Line" here, you can see that is a complex data type with the same columns
present in my Excel file.
00:13:36 So what I can do now that I extracted the three lines from my Excel, I can loop through those
three lines because they're contained in this output.
00:13:48 So I take the control "For each". I place it into my workflow and then I click on "For each".
00:13:57 Here, the "For each" is expecting a list of items. So I can just click on it.
00:14:04 And the suggestions here tell me that I can use the list of "Invoice Line" coming from my step
two.
00:14:13 So I click on it, and then inside my loop I have access to two loop parameters, like I said - the
index and the currentMember.
00:14:24 So to make this simple, I will use the "Log Message" activity. And for example, what I can do
for a message is
00:14:38 writing the name of the product inside my console. So, for example, here I can type
currentMember.
00:14:48 So by typing currentMember, I access the current item in my loop.
00:14:55 And I will select "product", that is the product name. So what this will do is it will take the first
item in my Excel file.

16
00:15:06 It will write the name of the product and take the second item of the Excel file and write the
name of a product,
00:15:14 and finally take the third one and do the same. So if I click here on Save.
00:15:20 I will close the Excel file for testing and click on Test.
00:15:25 I select my environment and click on Test. Normally, once this automation has been executed,

00:15:33 I should see the three different product names in the console.
00:15:50 As you see here, it's a good sample. If you update your version of the SDK,
00:15:58 you have sometimes a timing so that your agent is downloading the new version of the SDK -
that can take some time the first time,
00:16:08 but once you really execute it, it's much faster. So let's see, in my console here,
00:16:16 I have the three names of the products. So that's it for the demo of "For each".
00:16:24 But like I said, I have other types of loop. So here, if I go to Controls, I can take Repeat.
00:16:35 And here for Repeat, if I click on it, you can see that I have a starting value and an ending
value.
00:16:41 So if I choose starting value 2 and ending value 4, what it will do is it will execute three times
between 2 and 4
00:16:53 the list of steps I have inside my repeat. So let me clean my automation a little bit since I don't
need Excel any longer.
00:17:03 I will just log a message. And here I have put an activity inside my loop, and what I will do is I
will simply
00:17:20 write a text, "My current index is:", and use the index coming through my loop.
00:17:31 I save the expression. I save my automation.
00:17:37 And I execute again the automation. You will see now that the SDK package has been
downloaded,
00:17:45 the second test will be much faster. Now, my automation has been executed
00:18:01 and you can see that I have my current index as 2, 3, and 4. So my activity, here Log
Message, has been executed three times, between 2 and 4.
00:18:14 And finally, for the "Forever", I need to go back to my control.
00:18:25 And select Forever. Here, you can see by hiding Forever, I have my Forever loop,
00:18:34 there are no input parameters for the Forever because it would just loop indefinitely, but I have
automatically a condition here.
00:18:44 And what this Forever will do is it will execute the steps I make in my automation until a certain
condition.
00:18:54 So, for example, if I log a message inside my Forever, I will do the same thing.
00:19:01 I will put "My current index is:". And I will show the index of the loop.
00:19:14 And then I will set the condition. For this very simple example, what I will do is I will stop when
my index is
00:19:28 above 10. So basically, what this automation will do is it will loop through Forever.
00:19:41 And when my index reaches 11, my condition here will go into this branch, and we will attain
the end loop node.
00:19:54 And then by attaining this end loop node, it will execute exit the loop and reach the end of my
automation.
00:20:03 So let's save and test.
00:20:27 You can see now, if I'm here, that my index was starting at 0, it goes 1, 2, 3, 4, and it's ending
at eleven
00:20:37 because you can see that the Log Message is before the condition. So I reach 11 and then go
with 11 to the condition.
00:20:47 11 is above 10, and so I quit the loop. So that's it for the three different kinds of loops.

17
00:20:55 Now we will see in detail what we can do with scripts. So finally, as the last control, you have
what we call the custom scripts.
00:21:04 The custom scripts allow you to write your own JavaScript code to execute different actions
that are not provided
00:21:13 by the SDK packages. You can manipulate data coming from previous steps
00:21:20 if you set them as input parameters of your input script. But you can also create new outputs
00:21:27 by returning them into your JavaScript code. In the custom script,
00:21:33 you also have access to all the activities coming from the SDK packages, and the screens that
you captured inside your project.
00:21:42 So let's see a quick demo about that. To show you the capabilities of custom scripts inside
automation,
00:21:51 what I will do as a use case is I will extract the year of a date written in a European text format.

00:22:01 So for that, my automation is expecting as an input a string that we'll call "date". Now that I
have an input in my automation,
00:22:15 I will be able to use the custom script and drag and drop it into my flow. Once I click on
"Custom script",
00:22:24 you can see that I have access to a button called "Edit Script" that will open the script view, but
I can also double click on the "Custom script" step
00:22:36 and it will open this script view. In the script view, I have a text editor here on the right.
00:22:44 And on the right-side panel, I have the capability to add inputs and outputs from my script.
00:22:51 So first I will add an input, that will be "myDate". And myDate is, like I said,
00:22:59 in text a European format, and I will have an output. The output will be just the year I will
extract from this date.
00:23:14 Now, if I click here to write my code, you can see that if I type "my", I have as a suggestion,
00:23:24 "myDate" as a variable, so I can click on it and do a simple split that allows me to split the
date, depending on one character.
00:23:37 It's pretty simple. I will call "parsedDate" the result of the split.
00:23:52 And then I know that in a European format, the year is at the end of the date, so I will access
the last index of my parsed date because splits give me an array.
00:24:08 So I will just return the value "parsedDate" and the last one.
00:24:16 And I'm saving. So this is really a simple example.
00:24:21 But here you can write your custom code to do special data manipulation or a special course
to activities coming from the SDK.
00:24:32 So now if I go back to my main flow and I click on "Custom script", you can see that the
custom script is expecting one input parameter called "myDate",
00:24:43 and I have one output parameter called "year". So here I will choose the date coming from the
inputs of my automation,
00:24:53 and then I will use a log message to write the date...
00:25:03 the year, sorry. So here I will go to... and I say "My Year is:"
00:25:12 and I will choose the year. I save.
00:25:18 And I can now execute my automation, select my environment,
00:25:25 and then I will write my date. So if I choose, let's say, the 21st of October,
00:25:36 Click on Test... So you can see now that in the console log I have the year that I extracted
00:26:04 from the inputted text I put in my test dialog. What you should know also is that
00:26:14 using the custom script, you can reuse the activities present in the SDK. So if I type "irpa", you
can see that I have access to the SDK core,
00:26:30 and here I can have access to the different modules contained inside my package. And I can
access the different classes and activities coming from my SDK.

18
00:26:50 That's it for this demo. We will see in the next session how to debug automations.

19
Week 2 Unit 5

00:00:05 Hi, everyone, welcome back to this week two about building automations. Today, we will see
how to test the automation, but also how to debug them step by step.
00:00:17 So first, there are some prerequisites to be able to test the automation inside the cloud studio.
You have to have installed the desktop agent
00:00:28 and have it configured to connect to the cloud studio. The second prerequisite is to go inside
00:00:35 the factory and create an environment where your desktop agent is referenced. Without that,
you won't be able to debug your automations inside the cloud studio.
00:00:48 So, what is the purpose of debugging or testing your automations? So, you're building your
automation inside the cloud studio,
00:00:55 but at some point you want to see if it's executing correctly. So for that, we have a test button.

00:01:03 You click on it and it will just execute your current automation. But sometimes the execution of
your automation is not going well.
00:01:14 You have one specific step that is not working or the behavior of your different step is not what
you expect.
00:01:22 So for that, you need to debug it step by step, or to stop at the specific step. To be able to stop
at a specific step,
00:01:32 you need to add what we call a breakpoint. A breakpoint allows you to stop the execution of
your automation at a specific step.
00:01:41 To add one, you select the step inside your automation. You will see an orange circle on the
left.
00:01:48 You click on it, it will fill with orange. And that means that when executed,
00:01:54 your automation will stop at the steps before its execution. That's really practical to be able to
see
00:02:03 the different inputs and outputs of the steps of your automation. So, to launch a test inside the
cloud studio,
00:02:14 you already saw me doing that in the previous session, you click on the test button on the
upper right of the automation editor.
00:02:24 Then you select the environment where your desktop agent is configured and you just have to
wait a little bit so that the package of your project is deployed
00:02:36 to the desktop agent to be executed. Once you've waited, the automation will be executed.
00:02:42 And if you have breakpoints, it will stop at the breakpoints you set. So, what does the debug
look like inside the automation editor?
00:02:55 You can see that you have still the main panels you already know in the automation editor, but
a new panel appears on the left.
00:03:06 In this panel, you can see a toolbar where there are different buttons to stop the execution of
the test, or to be able to do some step-by-step debugging.
00:03:17 We will see that in the next slide. You have also the timeline,
00:03:22 which contains all the different steps you have already executed, so you can see what is
already executed and what is not executed.
00:03:33 You have on the left also what we call the breakpoints. When you click on the step you set
breakpoints,
00:03:40 you have a resume of what are the breakpoints available on the left side. Then on the right
side, when you select specific steps, you can see the values
00:03:53 of the inputs and outputs for the specific steps. This is really useful to be able to troubleshoot,
for example, a step that is not working correctly.
00:04:05 And then at the bottom you have what we call the console you have already seen for
validation.

20
00:04:11 But in test mode you will see all of the different logs are errors that occurred during the
execution of your automation.
00:04:22 Let's look into the details of the toolbar. In the toolbar, you have five different buttons.
00:04:28 The first one allows you just to stop the execution of your automation. The second one allows
you, when stopped on a specific step
00:04:38 with a breakpoint, to resume the execution of your automation. The third one allows you just to
execute one step.
00:04:47 So if you're in step two, you click on it. It will execute step two and go directly to step three and
stop on step three.
00:04:55 Then you have a button that allows you to step in inside a sub-automation we will see that in
the demo,
00:05:02 but you are able to debug the automation inside your upper automation. And then, since we
can go inside sub- automation,
00:05:13 we can also return to the upper automation by clicking on the final button. So, to explain that to
you in detail,
00:05:24 I will go into demo to see how to debug, step by step, the automations. So, for this demo, what
I will do is I will reuse the use case
00:05:34 shown in unit two where we just take data from an Excel and set the instructions that are in
another sheet of the Excel.
00:05:44 So I want to test this automation step by step. So first, what I need to do is to select a step I
want to stop on.
00:05:55 And for that I click on the step. On the left, you can see that I have this orange circle.
00:06:02 If I click on it, it adds a breakpoint so that when the test is launched, the automation will stop
before the execution of this step.
00:06:13 So, let's click on Test, select my environment and then click again on Test.
00:06:23 My package is downloaded by the desktop agent, and now the execution has started.
00:06:33 So you can see that Excel has been opened because the first step one has been executed
and this step only just opens Excel.
00:06:44 But for the moment, step two has not been executed. So here on the left, on the timeline, I
have a resume of what happened.
00:06:52 I can see on the left that I have the start, which has already been executed, and also the Open
Excel Instance that has been executed.
00:07:05 So since I'm stopped here, with the orange highlight we can see I am stopped at this step,
since I'm stopped here,
00:07:15 what I will do is I would just execute the step and stop on step three. So for that, I just need to
do a step over.
00:07:25 The step over here is executing step two and going at the beginning of step three.
00:07:33 We can see now that the Excel Cloud Link step has been executed. And by clicking on step
two,
00:07:41 we can see the data of corresponding to the steps. So if I click on Tester Data,
00:07:49 here I have access to the inputs and outputs parameter for step two. So I can see that the
Excel Cloud Link has
00:08:01 some input parameters like the path of my Excel file and the name of the worksheet. But I can
also see that, once executed,
00:08:12 this step has generated some outputs, and I have a list of three different elements. So here, if I
go to the first element, we can see that this is Flat Watch HD32,
00:08:27 like the data were in the Excel file. So I can see that the step has correctly extracted the data
from the Excel file.
00:08:37 So, let's continue to debug and, doing a step over, what it will do here is it opens in my Excel
file the file containing the invoice

21
00:08:52 and then it will activate the second worksheet. So if I click on it and go back to Excel,
00:08:58 I can see that the second worksheet has been activated. And now I will do a For Each on the
data of the first sheet and generate data in the second one.
00:09:09 So, let's go step by step inside the For Each. And now let's see.
00:09:21 Yes, the first line for the For Each has been correctly executed, and if I click again here, we will
see that now the second line is executed.
00:09:34 And if I go again for the third one, I execute it, and the third one is entered in the Excel file.
00:09:42 So really, the step-by-step execution allows you really to see your automation in a slower way,
because if I just click on Test it will fill all the data very fast,
00:09:56 and you can troubleshoot your automation if you see any problem. So that was how to use the
debugger.
00:10:05 But I also told you that you can debug sub- automations while debugging an upper one. So if I,
for example, close my Excel file, I will now go to the coding automation.
00:10:22 This automation is pretty simple. All the behavior of the automation is simply calling the Excel
Demo automation.
00:10:32 So let's test it. I did just a breakpoint on the step here.
00:10:40 And I'm stopped here on the first step. So now if I want to debug the content of the Excel
Demo automation,
00:10:52 I can use here the step into button. If I use the step into, it will load the automation Excel Demo
and stop in the first step.
00:11:05 So now I can execute the different step for this automation, like we saw in the previous demo.
00:11:14 Now, if I want to go back to the execution of my upper automation, I have just to click step out
here.
00:11:23 I click on step out, it executes the content of all the steps
00:11:29 of my Excel Demo and goes back into the coding automation. And since we went to the end
node of the coding automation, it finishes the execution.
00:11:41 So with all these tools, you can easily debug your automation and troubleshoot the problem
you have while executing it.
00:11:51 So thank you for attending this unit. In the next one, you will be able to see how to use the
store inside the cloud studio.

22
Week 2 Unit 6

00:00:06 Hello, welcome back. In this unit, will see the store, and how it
00:00:11 can help you to quickly start your robotic process automation journey. The store is available
within Cloud Factory in a dedicated tab.
00:00:21 The store is also available without Cloud Factory on a public Web site. The only difference with
one within the Cloud Factory,
00:00:30 you can only browse the content. We provide different kinds of content,
00:00:35 the pre-built content and the SDKs for cloud studio. For each content, we give you the overall
information,
00:00:45 a detailed description, and the details of the package are also included. And obviously within
Cloud Factory you can retrieve in your own tenant.
00:00:56 Let's talk about the pre-built content. You can easily browse with different criteria of filters.
00:01:03 You click on Get to acquire the content. And within your tenant, you can simply customize, if
needed, the content.
00:01:14 Let's do a quick demo of the pre-built content. The store is available in two flavors.
00:01:25 We have here the content that you can browse or within the factory, within your tenant, you
can go here and go to Explore.
00:01:37 So you see the same content is available. The only difference is
00:01:42 you cannot acquire the content. So if you go here, you see there is a "getting started".
00:01:48 In comparison here, you can acquire the content. So let's have a look at the public store.
00:01:57 So you see, we can make some filtering, like switching from Excel, going for this category,
00:02:10 for the line of business, industry, and you can filter very quickly
00:02:17 and you can hide a filter if you need to. You can do a plain search, like if you are looking for
Excel.
00:02:28 If you're looking for sales order. If you're looking for a business partner.
00:02:39 Or if you would like to have a look at BAPI, for instance.
00:02:44 And each time we see the line here with the tile "Creation of Business Partner"
00:02:51 and you can see the different versions. So you can go here, "Show All Versions",
00:02:57 and you see different versions that have been published and different What's News. So within
the tenant, for instance,
00:03:06 say you want to add the sales order. You want to use this one, for instance,
00:03:16 so you can see with a different example that could appear. And with "Show All Versions", and
you see the different versions,
00:03:25 you can even acquire the previous versions if you want to. So we click on Get.
00:03:35 And now this version is going to be added within your own system. Success.
00:03:44 So we can go back to Explore, and let's say that you want to have a look at Hello World, for
instance,
00:03:52 you can download this Hello World for the cloud studio. You click on Get, so depending on the
type
00:04:02 of information, you can have a specific illustration. So we click on Get.
00:04:12 And this version is going to be added. Back to the packages,
00:04:19 so the package that we imported from the store is now displayed here, so we see that we have
the automatic creation of sales orders.
00:04:35 So we've got the different files and the desktop packages. So we can have a look at the
different files that are provided here.
00:04:50 And we can go to the Hello World from the cloud studio.
00:04:58 We have Files, Project Panes, and Automations.

23
00:05:02 And what we can do from here, we can deploy directly with Add Trigger, or we can decide to
reuse.
00:05:09 So this option is available here, to reuse this package,
00:05:19 and it will create automatically a project.
00:05:26 And then this project has been added in our own system. And we can modify this project
correctly.
00:05:43 And that's it. The store has more than 100 examples of pre-built content.
00:05:51 It covers multiple lines of business created by our line of business experts.
00:05:57 The content can be ready to use or could be customized, or even become the basis of your
own automation.
00:06:06 And let's talk about the SDKs, the feature pack. Our SDK is modular by design,
00:06:14 we put in place a simple dependencies management. Once added within your project,
00:06:19 the corresponding activities will be available. On the help portal,
00:06:24 each activity is then documented. Within the project settings, we display
00:06:31 the list of SDKs embedded within your project. You can add or delete a package, update it.
00:06:39 And as mentioned before, with each SDK, a set of new activities will be available.
00:06:49 Let's do a quick demo. The SDK is provided within the store.
00:07:03 So in this case, we'll see the different SDKs, Core SDK, Excel, Outlook, PDF, SAPUI5, and
Word.
00:07:10 And over time, new SDK packages, new features will be available within the store.
00:07:19 So we can go here on the Core SDK and we see the different versions with the package
details.
00:07:35 Excel, for instance. SAPUI5.
00:07:54 PDF, or Word.
00:08:01 As we can see here, there is a new version for Word, so we can go directly here to update this
version in our own tenant.
00:08:11 And this version is going to be updated. So we click on Refresh.
00:08:18 And know we've got the latest version of the Intelligent RPA Word SDK. Another thing that we
can see on the project.
00:08:28 We've got the Hello Word cloud studio, so we can have a look. If you click on the gear button,
we see under Dependencies
00:08:47 that we have got new versions available from these two SDKs, so we can click directly here to
update all SDKs
00:08:56 or we can decide to update only one SDK. So, for instance, we can switch to this version,
00:09:03 click Update. And that's it, and the same for the Core,
00:09:08 we can just click here, select the version, and we will see that the system
00:09:15 expects that we prompt showing that this version is being impacted with a dependency.
00:09:24 So we can just update this version, and that's it. And now what we need to do at the end is to
click on Generate Package
00:09:35 to update this version, it's only patches, Generate Package. And now, if we go back to the view
of the packages...
00:09:49 So we've got our initial version from the store, and we've seen now the cloud studio 2,
00:09:55 which is an updated version, and we see the different versions.
00:10:00 We imported the SDK version 1.0.4. And this now is using the latest SDK version, and that's it.

00:10:16 And that's all for today and this week. We hope you enjoyed the store presentation
00:10:22 and hope it can help you to start your robotic process automation projects. Thank you.

24
www.sap.com/contactsap

© 2021 SAP SE or an SAP affiliate company. All rights reserved.


No part of this publication may be reproduced or transmitted in any form or for any purpose without the express permission of SAP SE or an SAP affiliate company.

The information contained herein may be changed without prior notice. Some software products marketed by SAP SE and its distributors contain proprietary softwar e components of other software vendors.
National product specifications may vary.

These materials are provided by SAP SE or an SAP affiliate company for informational purposes only, without representation or warranty of any kind, and SAP or its affiliated companies shall not be liable
for errors or omissions with respect to the materials. The only warranties for SAP or SAP affiliate company products and services are those that are set forth in the express warranty statements
accompanying such products and services, if any. Nothing herein should be construed as constituting an additional warranty.

In particular, SAP SE or its affiliated companies have no obligation to pursue any course of business outlined in this document or any related presentation, or to develop or release any functionality
mentioned therein. This document, or any related presentation, and SAP SE’s or its affiliate d companies’ strategy and possible future developments, products, and/or platform directions and functionality are
all subject to change and may be changed by SAP SE or its affiliated companies at any time for any reason without notice. The information in this document is not a commitment, promise, or legal obligation
to deliver any material, code, or functionality. All forward-looking statements are subject to various risks and uncertainties that could cause actual results to differ materially from e xpectations. Readers are
cautioned not to place undue reliance on these forward-looking statements, and they should not be relied upon in making purchasing decisions.

SAP and other SAP products and services mentioned herein as well as their respective logos are trademarks or registered trademarks of SAP SE (or an SAP affiliate company) in Germany and other
countries. All other product and service names mentioned are the trademarks of their respective companies. See www.sap.com/trademark for additional trademark information and notices.

You might also like