D365 F&O: Architecting Governed Apps via Copilot Cowork & Dataverse

Power Automate and Power Apps with D365 F&O · 9 min read
TL;DR: Learn how the new Dataverse plugin for Copilot Cowork enables D365 F&O architects to build governed, schema-aware Power Apps from a single natural-language prompt while maintaining strict security guardrails.
D365 F&OPower AppsDataverseCopilot & AIArchitecture

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.

Copilot Cowork App Generation Flow
Figure 1: Copilot Cowork App Generation Flow
FeatureManual DevelopmentCopilot Cowork with Dataverse Plugin
Schema DesignManual table and relationship mappingPrompt-driven automated modeling
Data SeedingManual entry or Excel importsAutomated sample data with "sample" tagging
GovernancePost-deployment auditPre-action approval cards and Entra ID enforcement
F&O IntegrationManual Virtual Entity/Dual-write setupIntelligent mapping to existing trusted tables
Environment SelectionMaker must manually navigate environmentsCopilot 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:

ℹ️ Good to knowCreate an event registration app for a community team. Events need a venue, date, start and end times, and capacity, reusing existing Dataverse contacts. If a Fail result is recorded, automatically create a follow-up task in the Dataverse Tasks table. Seed the app with 5 sample audits, including one failure to test the logic.

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.

90%
Schema Design Reduction
100%
Security Adherence
<15 min
Time to MVP
Development Time: Manual vs. Copilot Cowork
Figure 3: Comparison of effort between traditional manual app building and prompt-driven architecture via Copilot Cowork.

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.

💡 Pro tipUse the Copilot Studio integration to ground your agents in the data created by this plugin. Since the tables are standard Dataverse tables, they can be used as knowledge sources for custom GPTs.

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-mcp command 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 where msdyn_is_sample_data is 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.
Dataverse Plugin Architecture
Figure 2: Dataverse Plugin Architecture

Further reading

Note: written with AI assistance and reviewed by Gaurav Jadaun. Always validate in a sandbox environment before applying to production.

Comments

Popular posts from this blog

Monthly Inventory Close in Microsoft Dynamics AX 2012

Product Configuration Technology Ax2012R3

How to configure Fixed Assets Module in Ax2012