AI agents become significantly more powerful when they can interact with business data and perform actions on behalf of users.
In this scenario, we are building a Parking Dispute Resolution Agent in Microsoft Copilot Studio. The agent is responsible for interacting with the user and collecting the required information to validate a parking dispute.
Once the required information is available, the agent calls an Agent Flow. The Agent Flow retrieves the relevant information from Dataverse, processes the data, and returns a structured response to the calling agent.
The overall process is:
Agent Flows are designed to extend the capabilities of Copilot Studio agents by allowing an agent to call an automated process at runtime to retrieve data or perform actions.
The user wants to validate a parking dispute and provides the required customer and vehicle information.
The agent collects the information and then calls an Agent Flow to retrieve the corresponding dispute record from Dataverse.
1. Create the Parking Dispute Resolution Agent
First, create the agent in Microsoft Copilot Studio.
The agent is responsible for handling the conversation with the user and understanding what the user wants to accomplish.
For this scenario, the agent is named:
Parking Dispute Resolution Agent
The agent starts the conversation by asking the user how it can help.
For example:
Hello! I'm Parking Dispute Resolution Agent. How can I help you today?
The user can then ask:
What information do you need from me to validate the parking dispute?
The agent responds:
Please provide:
1. Customer name
2. Vehicle details, such as the registration/license plate number, make, and model.
Once you provide these details, I can retrieve and validate the dispute record.
This keeps the conversation simple for the user while allowing the agent to collect the information required by the Agent Flow.
2. User Provides the Required Information
The user now provides the information requested by the agent.
For example:
Validate a parking dispute for Customer A. The vehicle details are ABC-101.
At this point, the agent has the information required to perform the validation.
Instead of exposing the Dataverse query or backend processing to the user, the agent calls the configured Agent Flow.
This is where the Agent Flow acts as a bridge between the conversational experience and the business data.
3. Agent Flow
An Agent Flow is an automated process that can be called by an agent to retrieve information or perform actions.
For an Agent Flow to be used as a tool by an agent, it needs the When an agent calls the flow trigger and the Respond to the agent response action.
Our Agent Flow contains four main steps:
Now let's look at each step.
4. Agent Flow – When an agent calls the flow
Screenshot 1 – When an agent calls the flow

The first step of the Agent Flow is:
When an agent calls the flow
This trigger allows the Copilot Studio agent to invoke the Agent Flow when it needs to perform the parking dispute validation.
The trigger receives the required information from the agent.
For example:
The Agent Flow can then use these values in the subsequent actions.
This trigger is important because it makes the Agent Flow available as a tool that the agent can call at runtime. Microsoft documentation also specifies that Agent Flows using this trigger can be added to agents as tools.
The key advantage here is that the agent does not need to directly perform the Dataverse operation. Instead, it delegates the required backend processing to the Agent Flow.
5. Agent Flow – List rows
Screenshot 2 – List rows

The next step in the Agent Flow is:
List rows
This action is used to retrieve the relevant parking dispute information from Microsoft Dataverse.
The information received from the agent can be used to identify the appropriate record.
For example, the vehicle information provided by the user could be:
The List rows action searches the relevant Dataverse table and retrieves the matching dispute information.
The purpose of this step is to convert the user's conversational request into actual business data.
Instead of the agent simply responding based on the user's message, it can now work with information retrieved directly from Dataverse.
This provides a much more reliable approach for scenarios where the agent needs to validate information against enterprise data.
6. Agent Flow – Agent
Screenshot 3 – Agent

After retrieving the required information from Dataverse, the next step is the:
Agent
This step is responsible for processing and interpreting the information retrieved from Dataverse.
The Agent receives the relevant dispute information and determines the appropriate resolution based on the available data.
For example, the retrieved information can indicate that:
- The vehicle was recently purchased from the previous owner.
- The required ownership document was provided.
- Ownership was successfully verified.
- The vehicle details match the dispute record.
The Agent can use this information to produce a meaningful business result.
This is particularly useful because we don't want to simply return raw Dataverse fields to the user.
Instead, the information can be interpreted and transformed into a meaningful response such as:
Resolution: VALID
with an appropriate explanation of why the dispute is considered valid.
Agent Flow – Respond to the agent
Screenshot 4 – Respond to the agent

The final step of the Agent Flow is:
Respond to the agent
This action sends the result of the Agent Flow back to the Copilot Studio agent.
The response can contain structured information such as:
For example:
The agent can then use this information to generate the final response for the user.
The response action is a required part of an Agent Flow that is intended to be called by an agent.
8. Calling the Agent Flow from the Agent
Once the Agent Flow is configured and published, it can be added to the Copilot Studio agent as a tool.
The agent can then determine when the Agent Flow needs to be called based on the user's request.
In our scenario, the user has provided the customer and vehicle information.
The agent recognizes that it needs to retrieve and validate the parking dispute, so it calls the Agent Flow.
The execution looks like: