D365 F&O: Architecting Governed Apps via Copilot Cowork & Dataverse
Building custom extensions for Dynamics 365 Finance & Operations often feels like a choice between two extremes: the heavy-duty development of X++ forms or the rapid-but-sometimes-chaotic sprawl of low-code Power Apps. The challenge for solution architects has always been maintaining governance while enabling the business to move at the speed of thought. With the release of the Dataverse plugin for Copilot Cowork, we are entering a new era where a single natural-language prompt can generate a fully governed, schema-aware application that respects your existing Dataverse security and D365 F&O data relationships.
You can now transform a high-level business requirement into a functional Dataverse data model, complete with sample data and a published Canvas app, all within a managed framework that prevents shadow IT. This post explores the architectural nuances of this plugin, how it integrates with your existing D365 F&O environment, and the governance guardrails that ensure AI-generated apps remain enterprise-grade.
At a glance
- 🔹 Applies to: Dynamics 365 Finance, Supply Chain Management, and Power Platform Managed Environments.
- 🔹 Prerequisites: Power Apps Developer Plan or Premium license, .NET 10 SDK (for local MCP server integration), and Copilot Cowork access.
- 🔹 Effort level: Low to Moderate (Architectural setup is required; app generation is instantaneous).
- 🔹 Outcome: A published, governed Canvas app with a custom Dataverse schema linked to D365 F&O entities.
How it works
The Dataverse plugin for Copilot Cowork functions as an orchestration layer between the user's natural language intent and the Dataverse Web API. Unlike standard GPT-based code generators that simply suggest snippets, this plugin is equipped with specific skills: data modeling, record management, business logic generation, and solution packaging. When you provide a prompt, Copilot Cowork does not just write code; it plans a series of atomic actions—such as CreateTable, CreateAttribute, and CreateRelationship—that are executed directly against your environment.
Governance is baked into the execution model. The plugin operates under the user's security context. If a functional consultant does not have the permissions to create tables in the Production environment, the plugin will fail at the server level, regardless of the prompt's complexity. Furthermore, every structural change is presented as an approval card. The architect or maker must review and confirm the schema changes before the plugin commits them to the Dataverse metadata store. This ensures that the AI never acts as a "black box" and that data integrity is maintained according to the organization's standards.
| Feature | Manual Development | Copilot Cowork with Dataverse Plugin |
|---|---|---|
| Schema Design | Manual table and relationship mapping | Prompt-driven automated modeling |
| Data Seeding | Manual entry or Excel imports | Automated sample data with "sample" tagging |
| Governance | Post-deployment audit | Pre-action approval cards and Entra ID enforcement |
| F&O Integration | Manual Virtual Entity/Dual-write setup | Intelligent mapping to existing trusted tables |
| Environment Selection | Maker must manually navigate environments | Copilot detects and requests environment context |
Step-by-step solution
1. Environment and Plugin Preparation
Ensure your target environment is a Managed Environment. This is critical because apps published via Copilot Cowork run in the Microsoft Copilot Managed Runtime (preview), which inherits tenant-level governance policies. Verify that the Dataverse plugin is enabled in your Copilot Cowork settings. If you are working locally in VS Code, ensure the .NET 10 SDK is installed and the microsoft/power-platform-skills plugin is added to your coding agent.
2. Initializing the Session
Open Copilot Cowork and define your workspace. If your default environment lacks a Dataverse database, Copilot will prompt you to select the correct one. It is best practice to use a Developer environment first. Use the command /configure-canvas-mcp if you are using an IDE to sync your local environment with the Power Apps Studio coauthoring session.
3. Framing the Architectural Prompt
When prompting, be specific about data relationships. Instead of saying "Make an app for maintenance," use: "Create a Maintenance Request app. Use a table for Requests and link it to the existing Dataverse Contact table for the requester. Each request needs a Priority, a Description, and a Status. Ensure one request can have multiple Photo attachments." This forces the plugin to leverage existing trusted data rather than creating duplicate silos.
4. Reviewing the Logic and Schema
As Copilot Cowork processes the request, it will present approval cards. Review these carefully. Check for Data Type accuracy (e.g., ensuring a currency field is actually a Currency type and not a String). The plugin will also propose sample data; verify that it marks these rows as sample data so they can be easily purged using the standard Dataverse bulk delete tool.
5. App Generation and Power Fx Validation
Once the schema is approved, Copilot switches to the app-building skill. It generates the screens, binds them to the new tables, and applies a consistent theme. It performs a linting and type-checking phase. If you need custom logic—such as a specific validation in F&O—you can provide a follow-up prompt: "Add a validation that prevents saving if the Priority is High and the Description is less than 50 characters."
6. Publishing and Managed Runtime Deployment
The final step is the publish command. The app is deployed to the Managed Runtime, utilizing Microsoft Entra sign-in. Administrators can now monitor this app in the Microsoft 365 admin center. Because the app and data live together in a managed environment, your Data Loss Prevention (DLP) policies and environment-level security roles are automatically enforced.
Worked example
CommunityConnect, a community team, needed a mobile-friendly Event Registration App for organizing local events with capacity limits and waitlists. Historically, this would require a developer to create a custom Power App, manually map it to the InventTable (Products) via Virtual Entities, and design a complex submission flow.
Using the Dataverse plugin for Copilot Cowork, the lead architect provided the following prompt:
Copilot Cowork created Event and Event Registration tables, linking registrations to the existing Contact table and setting up four sample events.
// Generated by Copilot Cowork
SubmitForm(AuditForm);
If(AuditForm.LastSubmit.Result = "Fail",
Patch(Tasks, Defaults(Tasks), {
Subject: "Follow-up: Quality Failure for " & AuditForm.LastSubmit.Product.Name,
Description: "Manual inspection required due to spot check failure.",
Regarding: AuditForm.LastSubmit
})
);
The architect reviewed the approval cards, confirmed the schema, and the app was published in under 10 minutes. By using the Dataverse plugin, AeroParts Dynamics eliminated the need for manual data mapping and ensured that every audit record was immediately visible in the Power Platform admin center under their governed environment.
Automation and AI opportunities
The synergy between Copilot Cowork and D365 F&O extends beyond simple app creation. You can use Business Events in F&O to trigger Copilot actions. For example, when a new Purchase Order is confirmed in F&O, a business event can trigger a Power Automate flow that asks Copilot Cowork to update the corresponding tracking app or notify the vendor via a generated Dataverse record. Additionally, AI Builder can be integrated into the generated app to perform OCR on part labels, automatically filling the fields that Copilot Cowork designed.
Common pitfalls and troubleshooting
- Symptom: The plugin cannot find the target Dataverse environment.
Cause: The default environment lacks a Dataverse database or proper environment context.
Fix: Provide the correct environment when prompted by Copilot Cowork before building the app. - Symptom: "Environment not found" error during prompt execution.
Cause: The user context does not have Environment Maker or Admin roles in the target Dataverse environment.
Fix: Assign the Environment Maker role in the Power Platform admin center. - Symptom: Generated Power Fx formulas contain errors after publishing.
Cause: Copilot may use deprecated functions or incorrect field names for complex lookups.
Fix: Use the/configure-canvas-mcpcommand to open the app in Power Apps Studio and run the App Checker. - Symptom: Sample data is appearing in production reports.
Cause: The user forgot to purge the sample data after the MVP phase.
Fix: Use the Bulk Record Deletion tool in Dataverse, filtering for records wheremsdyn_is_sample_datais true. - Symptom: Plugin fails to create relationships.
Cause: Attempting to create a relationship between tables in different Dataverse environments.
Fix: Ensure the prompt specifies that all tables must reside in the same environment context.
Best-practice checklist
- ✅ Always use a Managed Environment to ensure Entra ID and DLP policies are enforced.
- ✅ Review every Approval Card to verify Data Types and Relationship cardinality (1:N vs N:N).
- ✅ Leverage existing tables (like Contact or Product) instead of letting Copilot invent new ones.
- ✅ Validate that all generated tables are part of a Solution for proper ALM.
- ✅ Enable Coauthoring in Power Apps Studio settings before connecting local AI tools.
- ✅ Purge all Sample Data before moving the app to a User Acceptance Testing (UAT) phase.
- ✅ Use the Power Platform admin center to monitor the app usage and API calls.
FAQ
Does the Dataverse plugin require a specific F&O version?
The plugin itself is a Power Platform feature, but to link it effectively with D365 F&O data, you should be on version 10.0.32 or later to ensure full compatibility with the latest Virtual Entity and Dual-write enhancements.
Can I use this to modify existing X++ forms in F&O?
No. This plugin is designed for Dataverse and Power Apps. To modify X++ forms, you must use the standard D365 F&O development tools in Visual Studio. However, you can use this plugin to build side-by-side apps that interact with F&O data.
What happens if the AI generates a schema that violates my DLP policies?
The Dataverse plugin respects your environment's Data Loss Prevention (DLP) policies. If the AI attempts to use a blocked connector or move data between restricted zones, the action will be blocked at the server level, and an error will be returned to the Copilot interface.
Key takeaways
- 🎯 The Dataverse plugin for Copilot Cowork enables governed rapid prototyping by turning natural language into validated schema and apps.
- 🎯 Security is inherited from the user's Dataverse roles, ensuring that AI-led development never bypasses enterprise permissions.
- 🎯 The Approval Card mechanism is the primary control point for architects to ensure data integrity and structural quality.
- 🎯 Apps built this way are fully managed, running in the Copilot Managed Runtime and visible to IT administrators.
Further reading
- From one prompt to a governed Dataverse app: the Dataverse plugin lands in Copilot Cowork
- Power Apps Developer Plan Guide: Features and Benefits
- Create and edit canvas apps with AI code generation tools
- Licensing overview for Microsoft Power Platform
Note: written with AI assistance and reviewed by Gaurav Jadaun. Always validate in a sandbox environment before applying to production.
Comments
Post a Comment