We’ve been building our Copilot Studio topics manually in my example of the HR Copilot. But in this world of generative AI there is a another (better?) way. You can utilize plugin actions to create wrappers around connectors, Cloud Flows and skills. The AI will recognize the intent of the user and will pick the right action to fulfill that intent. If there are input parameters that needs to be filled in, the AI will query the user about this. In this blog we go through the steps in making our first action where a user can submit a leave request.
This post is part of a series of blogpost about Copilot Studio in which I create a HR Copilot and show various options available within Copilot Studio. Here are my other posts about this topic:
- Start of with asking yourself a couple of questions before you build your own Copilot.
- Then connect your Copilot to SharePoint to quickly make your Copilot intelligent.
- Now go ahead and use the build-in Copilot of Copilot Studio to quickly create a custom topic.
- Create dynamic options in a question node by utilizing the JSON function.
- Finish off the topic and learn how to add Rich Media to a message.
Creating the plugin action
Let’s start off by walking through what steps to do when creating a plugin action. The first step is to select what action you want to add. In our case it’s our already created Power Automate Flow to submit leave request.

This flow’s connections are already defined so step 2, the connection details, is skipped. But if you, for example, want to connect to an excel file to delete a row, this is where you define which file.

Now the most important steps are in the review and finish step. As in here you define the name of your modal and the description. Both are important as the AI will use the information you enter here to determine when to use this action. In fact, I find it best to first define a few test scenario’s when the action should be triggered. Then if you know these scenario’s you can create the perfect description.

After this third step, you will be prompted that the input parameters don’t have a description. Maybe you already have a good description it’s also a good practice to review the inputs anyway. Why you ask? Find out below!
Defining the input

When you open the action details you will be prompted to provide a description for your inputs. This will help the AI fill the input correctly. What also helps, is selecting the correct entity of the answer you are looking for. In our example we are working with dates. Changing the “Identify as” to a date will make it immediately clear to the AI that we are looking for the startdate. Combine this with a description of “The startdate of the leave request” and the input is good to go!

Another input we would like to change is the email adres of the current user. As we are building an internal HR Copilot that we deploy to MS Teams we know the emailadres and it would be annoying for the user to fill this in. Luckily we can still use the “Set as a value” option, which will allow us to select the User.Email system variable.

Dynamic chaining
Loosely coupled with plugin Actions is the Dynamic Chaining ability of Copilot Studio. This feature is also referred as Generative Actions. Enabling this feature will replace the classic topic matching mechanism based on trigger phrases. Generative AI will do the topic matching for you based on the descriptions of the topics and actions. Tip: If you enable this, be sure to add good descriptions to your existing topics!

When creating our plugin action we’ve enabled the Dynamic chaining trigger. This means that Copilot can choose our action as a starting point to answer the user’s query. After creation of our plugin action we will get notified that we need to enable dynamic chaining in the Generative AI settings.

Results come from plugin action
There you have it, the steps to create a plugin action. Wrapping our Cloud Flow in a plugin action and letting Copilot Studio and Generative AI do all the work for us. Let’s see it in action:

Amazing isn’t it? Generative AI will do quite a bit of heavy lifting for us. No longer do we need to create the entire conversation flow of our Copilots. There are some things to consider though as we can see the following differences with our manually build topic:
- There are no option sets presented to the user for leave types.
- They are thus also not dynamically filled from the HR system.
- The conversation is plain. The AI will not present the user with an image to wish them a happy holiday.
Obviously these might not be important to most conversation flows, but it’s something to consider.