Give Your Copilot Studio Agent Dataverse Knowledge: A Fleet Inventory Example
Stop hard-coding data. Learn how to connect your Copilot Studio agent directly to Dataverse tables, using a vehicle fleet inventory as a practical example.
Copilot Studio agents truly shine when they can answer questions from your live business data. Connecting to a Dataverse table is one of the fastest ways to achieve this. The agent transforms natural language user queries into structured Dataverse searches, returning formatted results without custom APIs or complex plugins. This guide walks through the entire process using a vehicle fleet inventory as our working example, from table creation to fine-tuning the AI's understanding of your data.
The Scenario: Velocity Rentals Fleet Agent
We are building an agent for a car rental company called Velocity Rentals. Customers can ask the agent to find a specific type of vehicle and get its details and availability. The agent has a single Dataverse table to query, named Fleet Inventory.
The table contains these columns:
| Column Name | Data Type | Description |
|---|---|---|
| Vehicle ID | Autonumber | Unique internal identifier for the vehicle |
| VIN | Text (Primary) | The 17-character Vehicle Identification Number |
| Make | Choice | Toyota, Ford, Honda, BMW |
| Model | Text | Camry, F-150, Civic, X5 |
| Year | Whole Number | The model year of the vehicle |
| Category | Choice | SUV, SED, TRK, VAN |
| Mileage | Whole Number | Current odometer reading |
| Daily Rate | Currency | Rental cost per day |
| Status | Choice | Available, Rented, Maintenance |
| Location | Text | The rental branch where the vehicle is based |
| Special Notes | Multiple Lines | Warnings or special features |
Notice how the column descriptions are written in plain English. This is the first and most critical step: well-described columns are far easier for the AI to understand and query accurately.
Step 1: Connect the Table as a Knowledge Source
In your Copilot Studio agent (let's call it Fleet Assistant), go to the Knowledge tab.
Click Add Knowledge and select Dataverse.
Search for the Fleet Inventory table and select it. The connection status will show a green checkmark with "Ready" when the data is accessible.
The agent must have read access to the table. If your agent uses user authentication, the logged-in user needs the correct Dataverse role. For unauthenticated agents, grant read access to the system service principal.
Step 2: Enforce a Strict Output Format
Without strict instructions, the agent might generate wordy, variable responses. We want clean, data-centric replies.
Go to the Overview tab of your agent and edit the Instructions field. Paste the following guidance:
You are the Fleet Assistant for Velocity Rentals. HARD CONSTRAINTS: - Only use vehicle data from the Fleet Inventory knowledge source. - Do not infer, guess, or add vehicles not present in the data. - If no vehicles match, reply with: "No vehicles match your request." - Return ALL column values for the matching records. OUTPUT FORMAT: * <Year> <Make> <Model> - VIN: <VIN> - Category: <Category> - Mileage: <Mileage> mi - Rate: $<Daily Rate>/day - Status: <Status> - Location: <Location> No extra text. No pleasantries. Just the data in the format above.
Step 3: Map Synonyms to User Language
A customer might ask for an "order number" or "reservation ID", but your unique identifier is called Vehicle ID. Without help, the agent cannot connect these terms.
Open the Dataverse knowledge source in the Knowledge tab and go to the Synonyms panel.
Add synonyms for the Vehicle ID column:
- Stock Number
- Reservation Code
- Reference Number
Do the same for VIN:
- Chassis Number
- Serial Number
Now when a user asks "Find the vehicle with stock number 42," it correctly maps back to the Vehicle ID column.
Step 4: Build a Data Glossary for Internal Values
Your Category column uses short codes: SUV, SED, TRK, VAN. Your users will ask for "a pickup truck" or "a minivan". The Data Glossary bridges this gap.
In the Glossary tab of the Dataverse knowledge source, add these mappings:
| Term | Description |
|---|---|
| Sport Utility Vehicle | "Sport Utility Vehicle" refers to the value "SUV" in the Category field. |
| Sedan | "Sedan" refers to the value "SED" in the Category field. |
| Pickup Truck | "Pickup Truck" refers to the value "TRK" in the Category field. |
| Cargo Van | "Cargo Van" refers to the value "VAN" in the Category field. |
| Available | A vehicle that is "Available" has the Status value "Available". |
| Under Maintenance | A vehicle "Under Maintenance" has the Status value "Maintenance". |
Now try asking: "Show me a pickup truck that is available in Miami."
The agent will query the Dataverse table for Category = TRK AND Status = Available AND Location = "Miami".
Common Pitfalls
- Skipping Column Descriptions: If your columns are just named "Category" without any description, the AI has no idea what choices it contains. Always expand the description field in the Dataverse table designer and write a clear sentence for every column the agent will use.
- Ignoring the Glossary: This is the top reason agents give wrong answers for coded data. If a column stores
YandN, you must tell the AI whatYmeans. "Yes" might mean available, or it might mean "requires inspection". - Testing Without Synonyms: Your users won't know your internal schema. They will use terms like "price" instead of "rate" or "number" instead of "ID". Add synonyms early and test them with real phrasing.
- Schema Changes After Connection: If you rename a column in Dataverse after creating the knowledge source, the connection breaks silently. You must remove the knowledge source and re-add it for Copilot Studio to pick up the new schema.
Conclusion
Dataverse knowledge in Copilot Studio is a powerful shortcut to building data-aware agents. The setup is deceptively simple—just connect a table—but the true power comes from configuration. Invest heavily in Column Descriptions, Synonyms, and the Data Glossary. These three features take an agent from a confused intern who has the data but cannot find it, to an expert analyst serving perfect answers every time.
Start with a single, cleanly designed table as demonstrated here. Iterate based on real user queries, and you will have a production-ready data agent in a fraction of the time required for custom API integrations.
References
- Matthew Devaney, Connect To Dataverse Knowledge In Copilot Studio. https://www.matthewdevaney.com/connect-to-dataverse-knowledge-in-copilot-studio/
- Microsoft Learn, Add Dataverse knowledge to Copilot Studio. [Placeholder URL]
- Microsoft Learn, Key concepts for building agents in Copilot Studio. [Placeholder URL]