Architecture logo

Architecture

Community
korchard333
architecture

Power Platform Solution Architecture. Use when: selecting app type (Code App vs Canvas vs Model-Driven), designing solution structure, environment strategy, integration patterns, security architecture, DLP policies, capacity planning, Architecture Decision Records (ADRs).

Overview

Publisherkorchard333
Repositoryclaude-power-platform-community
Skill namearchitecture
Stars
50
Forks
6
Bundled files
1
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 1 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by korchard333 on GitHub. Read the source before you install it.

Installation

Install the Architecture AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/korchard333/claude-power-platform-community/tree/main/.claude/skills/architecture
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/korchard333/claude-power-platform-community.git /tmp/claude-power-platform-community
mkdir -p .claude/skills
cp -r /tmp/claude-power-platform-community/.claude/skills/architecture .claude/skills/architecture
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Architecture in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Architecture on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Architecture is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Skill: Power Platform Solution Architecture

When to Use

Trigger when making design decisions: app type selection, solution structure, integration patterns, environment strategy, security model design.


App Type Selection Matrix

FactorCode AppCanvas AppModel-Driven App
UI flexibilityFull React controlPixel-level low-codeForm/view-driven
Data sourceConnectors via SDKAny connectorDataverse only
Developer profilePro-dev (React/TS)Citizen dev / makerFunctional consultant
Complex custom UIBest choicePossible but painfulLimited
Standard CRUDOverkillGoodBest choice
OfflineNoLimitedNo
MobileNo (not supported)YesYes
LicensingPremium requiredStandard or PremiumPremium
ALM maturityGit-based, no Solution PackagerSolution-based, canvas unpackSolution-based, full ALM

Decision rules:

  • Dataverse data + standard CRUD + business process → Model-Driven App
  • Custom UX + multiple data sources + mobile → Canvas App
  • Complex interactive UI + pro-dev team + TypeScript expertise → Code App
  • Rapid AI-generated custom page within MDA → Generative Page (GA)
  • Combine: Code App for complex UI module, Model-Driven for admin/config

Solution Architecture Patterns

Single Solution (Prototypes / Small Apps)

ContosoApp
├── Code App / Canvas App
├── Flows
├── Tables
├── Security Roles
└── Environment Variables

Use when: single team, <5 components, no cross-solution dependencies.

Layered Solutions (Enterprise)

ContosoShared              ← Shared tables, security roles, env variables, global option sets
  ↑ depends on
ContosoCore                ← Core business logic, shared flows, custom APIs
  ↑ depends on
ContosoHR                  ← HR-specific app, flows, and components
ContosoFinance             ← Finance-specific app, flows, and components

Rules:

  • Max 3-4 layers — deeper becomes unmaintainable
  • Shared → Core → Domain prevents circular dependencies
  • Each solution has its own publisher prefix
  • Environment variables and connection references live in the Shared layer

Environment Strategy

EnvironmentPurposeSolution TypeWho Has Access
DevBuild and configureUnmanagedMakers, developers
Test/QAIntegration testingManagedTesters, QA team
UATUser acceptance testingManagedBusiness users, stakeholders
ProductionLive operationsManagedEnd users
SandboxExperimentation, trainingManaged or UnmanagedVaries

Rules:

  • NEVER import unmanaged solutions to Test, UAT, or Production
  • Each environment has its own service principal for CI/CD
  • DLP policies applied consistently across all environments
  • Environment variables set per environment (never hardcoded)

Integration Decision Tree

Need to integrate with external system?
├── Standard connector exists? → Use it (lowest maintenance)
├── REST API available?
│   ├── Simple, low volume → HTTP action in Power Automate
│   ├── Code App needs it → PAC CLI data source (pac code add-data-source)
│   └── Complex, reusable, high volume → Custom Connector + Azure APIM
├── No API (legacy/file-based)?
│   ├── File drop → Power Automate + Azure Blob
│   └── Database direct → Azure SQL connector or Dataflow
└── Real-time bidirectional → Azure Service Bus + Dataverse webhook

Security Architecture

Authentication:   Entra ID (automatic for Code Apps — handled by Power Apps host)
Authorization:    Dataverse security roles (never app-level checks alone)
Secrets:          Azure Key Vault → Environment Variable (secret type)
Service accounts: Dedicated App Registration per solution (never personal accounts in pipelines)

Security Role Hierarchy:
  System Administrator    ← IT admins only
  System Customizer       ← Makers only, never end users
  [App] Admin             ← Full table access for app admins
  [App] Manager           ← Team-level access for managers
  [App] User              ← Own-record access for standard users

Custom API vs Power Automate vs Plugin

Use CaseRecommendation
Reusable action called from Code App / Canvas AppCustom API + Plugin
Orchestration of multiple systemsPower Automate
Pre/post Dataverse operation logicPlugin (sync)
Long-running async processPower Automate
Real-time validation before savePlugin (pre-operation)
Scheduled batch jobPower Automate (Recurrence trigger)
Complex business logic from Code AppCustom API (callable via SDK)

Capacity & Limits

ResourceLimitMitigation
Code App bundle size30 MB maxTree-shaking, lazy loading, optimize assets
Dataverse API requests100,000/day per userService principal for bulk ops, batch requests
Power Automate runs/day40,000 (P1 license)Batch operations, child flows
Canvas app controls~500 recommendedSplit screens, use components
Canvas app data row limit (non-delegable)2,000 maxDelegable queries bypass this limit entirely
Synchronous flow timeout120 secondsAsync pattern with polling
Flow action outputs100 MBTemp storage for large payloads
Code App connectors1,500+ availableCheck premium vs standard licensing
Standard Dataverse tableBillions of rows (but slower at scale)Use Elastic Tables for 100M+ write-heavy scenarios

Managed Environments

Managed Environments is a governance layer available on all paid Power Platform/Dynamics 365 licenses. Enable it per environment in the Power Platform Admin Center.

Key architectural implications:

  • Required for Power Platform Pipelines (first-party ALM)
  • Enables IP Firewall — restrict environment to corporate IP ranges
  • Enables Customer Managed Keys — full encryption sovereignty
  • Enables Lockbox — Microsoft engineer access requires explicit approval
  • Enables Solution Checker enforcement — block non-compliant deployments
  • Enables Conditional Access per app — Entra ID CA policies on individual apps

Recommendation: Enable Managed Environments on all non-Dev environments (Test, UAT, Production) from day one.

IMPORTANT (Feb 2026): Starting February 2026, pipeline target environments are auto-enabled as Managed Environments. Plan for this in your environment strategy.


DLP Policy Design

Data Loss Prevention (DLP) policies classify connectors as Business, Non-Business, or Blocked. Connectors in different groups cannot be used together in the same app or flow.

Design Principles

  • Default posture: block everything, allow by exception
  • Cannot block Microsoft-owned connectors
  • Create environment-specific policies for isolated business use cases (e.g., DocuSign only in Contracts env)
  • Pair DLP with your environment strategy — separate environments = separate policies

Connector Classification

Business:     Connectors approved for business use (Dataverse, SharePoint, Teams)
Non-Business: Personal/consumer connectors (social media, personal email)
Blocked:      Never allowed in this environment (custom connectors for non-approved APIs)

Enforcement Stages

Investigating → Learning → Notify Only → Design-time → Full Enforcement

Start with "Notify Only" to identify affected apps/flows before full enforcement.

Limits

  • Max 600 DLP rules per tenant
  • Policy max size: 100 KB

Observability & Monitoring

Application Insights Integration

Connect Power Platform to Azure Application Insights for end-to-end monitoring.

Enable in Power Platform Admin Center:
  Environment → Settings → Product → Features → Export data to Application Insights
  → Enter Application Insights Connection String

What gets captured:
  - Canvas App: page loads, screen transitions, errors, custom traces
  - Model-Driven App: form load times, API call durations, JavaScript errors
  - Power Automate: flow run telemetry (requires Managed Environments)
  - Plugins: ILogger output (see plugins skill)
  - Dataverse Web API: request counts, latencies, failures

Monitoring Stack

ComponentMonitoring ToolWhat to Watch
Code App (React)Browser console + custom error boundaryJS errors, API call failures
Canvas AppMonitor tool + App InsightsScreen load times, delegation warnings
Model-Driven AppApp Insights + Plugin Trace LogForm load, plugin errors
Power AutomateFlow run history + App InsightsFailed runs, throttling, timeouts
PluginsITracingService + ILogger (App Insights)Exceptions, performance
Custom ConnectorsAPIM analytics + App InsightsAPI call volumes, latency, error rates
DataverseAdmin Center analyticsAPI limits, storage, user activity

Monitor Tool (Canvas App + Flow Diagnostics)

Power Apps → Monitor → Open Monitor
→ Start session → Use the app → See real-time telemetry:
   - Network calls (URL, duration, status)
   - Screen navigation timing
   - Data operation duration
   - Delegation warnings (live)
   - Error details with call stack

Alerting

Azure Application Insights → Alerts → New Alert Rule:
  - Condition: customEvents count > threshold (e.g., errors in last 15 min)
  - Action Group: Email, Teams webhook, Azure Function
  - Severity: Critical for production, Warning for test

Governance & Administration

Center of Excellence (CoE) Starter Kit

The CoE Starter Kit is a free, Microsoft-maintained solution for Power Platform governance.

ComponentPurpose
CoE CoreInventory — discovers all apps, flows, connectors, makers across tenant
CoE GovernanceCompliance flows — archive unused apps, notify inactive makers, DLP violation alerts
CoE NurtureAdoption — maker onboarding, training tracking, app catalog
CoE Audit LogAudit streams — surface Office 365 audit log data into Dataverse

Installation pattern:

1. Dedicated environment ("CoE" or "Governance") — Managed Environment enabled
2. Install CoE Core first → run initial inventory sync (can take 24h for large tenants)
3. Configure environment variables: Admin email, Power BI workspace, excluded environments
4. Install Governance + Nurture after Core stabilizes
5. Customize: adjust thresholds, notification templates, exception lists

Important: CoE Starter Kit is NOT a managed solution from Microsoft — it ships as unmanaged. Plan for manual upgrades and potential customization drift.

Sharing & Maker Controls

SettingWhere to ConfigureRecommendation
Canvas App sharing limitPower Platform Admin Center → Tenant settingsLimit to security groups (prevent sharing with "Everyone")
Environment maker roleEnvironment → Security → RolesRestrict who can create apps/flows in production
Default environment routingTenant settings → New makersRoute new makers to a dedicated "Personal Productivity" environment
Solution publisher controlsAdmin Center → EnvironmentsLimit who can create new publishers
Connector consentTenant settingsRequire admin approval for new custom connectors

Maker Onboarding Workflow

New Maker identified (Entra ID group addition)
  └── Automated: Assign to "Maker" security group
  └── Automated: Grant Environment Maker role in Personal Productivity env
  └── Automated: Send welcome email (CoE Nurture template)
        - Training resources link
        - Governance policy summary
        - How to request a dedicated environment
  └── Gated: Request dedicated environment via approval flow
        - Business justification
        - Expected data classification
        - Sponsor approval
  └── Automated: Provision environment from template (if approved)

Environment Request & Provisioning

Environment TypeWhen to CreateWho Approves
Personal ProductivityDefault for all makersAuto-provisioned
Project DevNew project starting developmentTeam lead
Project Test/UATProject ready for testingPM + IT Admin
ProductionProject approved for releaseIT Admin + Change Advisory Board
SandboxExperimentation, training, demosTeam lead

Admin Monitoring Checklist

  • CoE inventory sync running daily without errors
  • DLP violation alerts configured and routed to governance team
  • Unused app cleanup flow active (e.g., archive apps not used in 90 days)
  • Capacity alerts set (Dataverse storage, API calls, AI Builder credits)
  • Environment creation requests reviewed weekly
  • Connector consent requests reviewed within 2 business days

Architecture Decision Record (ADR) Template

markdown
## ADR-[Number]: [Decision Title]

### Status
[Proposed / Accepted / Deprecated / Superseded]

### Context
[What is the problem? What are the constraints? What requirements drive this decision?]

### Decision Drivers
- [Driver 1: e.g., "Must support 500 concurrent users"]
- [Driver 2: e.g., "Team has React/TypeScript expertise"]
- [Driver 3: e.g., "Must deploy across 3 environments via managed solutions"]

### Options Considered

| Option | Pros | Cons |
|---|---|---|
| [Option A] | [Pros] | [Cons] |
| [Option B] | [Pros] | [Cons] |
| [Option C] | [Pros] | [Cons] |

### Decision
[Which option was chosen and why]

### Consequences
**Positive:**
- [Benefit 1]

**Negative:**
- [Trade-off 1]

**Risks:**
- [Risk 1 + mitigation]

### ALM Implications
[How this decision affects solution structure, environment promotion, and CI/CD]

AI Architecture Decision Tree

Decision Tree

Need AI capabilities in your solution?
├── Conversational AI (chat/voice)?
│   ├── Internal users (employees) → Copilot Studio agent deployed to Teams
│   ├── External users (customers) → Copilot Studio agent via Power Pages Agent API
│   └── Embedded in existing app → Copilot Studio agent embedded in MDA/Canvas
├── Autonomous AI (no user interaction)?
│   ├── Simple rule + AI → Power Automate Agent Flow
│   └── Complex multi-step → Copilot Studio autonomous agent
├── Document/image processing?
│   └── AI Builder (document processing, object detection, text recognition)
├── Custom LLM integration?
│   ├── Need standard models (GPT-4o, etc.) → Copilot Studio (built-in or BYOM)
│   ├── Need fine-tuned/custom model → Azure AI Foundry + Custom Connector
│   └── Need streaming/advanced patterns → Azure OpenAI direct from Code App
├── Multi-agent orchestration?
│   ├── Same domain → Copilot Studio embedded agents
│   └── Cross-domain/cross-tenant → Copilot Studio connected agents (A2A protocol)
└── Simple AI prompts in workflows?
    └── AI Builder GPT prompts in Power Automate

Comparison Matrix

CapabilityCopilot StudioAI BuilderAzure AI FoundryDirect AOAIPower Automate Agent Flows
Conversational AIBestNoPossiblePossibleNo
Document processingNoBestPossibleNoNo
Custom modelsBYOM (11k+)LimitedFull controlFull controlVia connectors
No-code setupYesYesNoNoMostly yes
ALM/solution-awareYesYesExternalExternalYes
LicensingPer-messagePer-page/callAzure consumptionAzure consumptionPer-flow
Multi-agentYes (A2A)NoYes (custom)NoNo
GovernanceAutomation CenterAdmin CenterAzure RBACAzure RBACAutomation Center

When to Use Each

Use CaseRecommendedWhy
Employee FAQ botCopilot StudioBuilt-in knowledge sources, Teams deployment, ALM
Invoice processingAI BuilderPurpose-built document processing, Power Automate integration
Custom RAG pipelineAzure AI FoundryFull control over embeddings, vector store, retrieval
Streaming chat in Code AppDirect AOAINeed streaming responses, custom UI, low latency
Automated email triagePower Automate Agent FlowEvent-driven, AI selects actions, governance via Automation Center
Cross-department agent networkCopilot Studio connected agentsA2A protocol, security boundaries, independent lifecycle

Cost Considerations

  • Copilot Studio: per-tenant license + per-message beyond included allocation
  • AI Builder: credits included with some licenses, pay-per-use otherwise
  • Azure AI Foundry/AOAI: Azure consumption-based (token pricing)
  • Evaluate: expected volume, required SLA, data residency requirements

Anti-Patterns for AI Architecture

  • Using Azure AI Foundry when Copilot Studio covers the requirement (unnecessary complexity)
  • Calling Azure OpenAI directly from Canvas Apps (expose API keys client-side)
  • AI Builder for scenarios that need conversational context (it is stateless)
  • Building custom RAG when Copilot Studio knowledge sources suffice
  • No content moderation on any AI-generated output
  • AI decisions without audit trail (compliance risk)

Anti-Patterns

  • Monolithic single-solution architecture for anything beyond a prototype — leads to merge conflicts, deployment bottlenecks, and upgrade failures. Use solution layering (base + feature solutions) instead.
  • Choosing Code Apps for simple CRUD forms — overkill for standard data entry. Use Model-Driven Apps for form-centric CRUD and reserve Code Apps for complex, custom UI.
  • No publisher prefix strategy — leads to naming collisions, component ownership confusion, and blocked ALM. Define a short, unique prefix per publisher from day one.
  • Security implemented only at the app layer (hiding buttons/tabs) — data is still exposed via API, Power Automate, Advanced Find. Always enforce security at the Dataverse level with security roles.
  • No ALM plan at project start — results in manual deployments, environment drift, and "works on my machine" failures. Define solution structure, environment topology, and CI/CD pipeline at design time.
  • Designing without data volume estimates — 100 rows and 10 million rows need fundamentally different patterns (pagination, indexing, async processing). Ask about expected volumes early.
  • Over-engineering with microservice patterns — Power Platform has built-in orchestration (flows, plugins). Don't wrap simple Dataverse operations in Azure Functions unless there's a clear technical reason.
  • Skipping the security model discussion — retrofitting security after go-live is expensive and error-prone. Design business units, roles, and row-level security upfront.

Related Skills

  • security — Dataverse security model, roles, column-level security
  • alm — CI/CD pipelines, solution lifecycle, environment promotion
  • code-apps — Code Apps architecture (React + TypeScript + Vite)
  • canvas-apps — Canvas App design patterns
  • model-driven-apps — Model-Driven App design
  • azure-openai — Azure OpenAI integration patterns
  • copilot-studio — Copilot Studio agent design and deployment

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Architecture AI skill do?

Power Platform Solution Architecture. Use when: selecting app type (Code App vs Canvas vs Model-Driven), designing solution structure, environment strategy, integration patterns, security architecture, DLP policies, capacity planning, Architecture Decision Records (ADRs).

Why use Architecture on TypingMind?

Because you install it once and use it with any model. Architecture is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Architecture in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/korchard333/claude-power-platform-community/tree/main/.claude/skills/architecture. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Architecture?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Architecture?

As many as you like. As long as a model supports skills, you can use Architecture with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Architecture AI skill free?

Yes. It is published on GitHub by korchard333 under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇