plugins/dataverse/skills/dataverse-schema-design/SKILL.md
# dataverse-schema-design This skill provides guidance on designing Dataverse table schemas and data models. Use when users ask about "Dataverse table design", "Dataverse schema", "Dataverse relationships", "Dataverse columns", "data modeling Dataverse", "Dataverse best practices", or need help designing their data structure. ## Table Design Fundamentals ### Naming Conventions - **Table prefix**: Use publisher prefix (e.g., `new_`, `cr123_`) - **Table names**: PascalCase, singular (e.g., `new
npx skillsauth add sahib-sawhney-wh/sahibs-claude-plugin-marketplace plugins/dataverse/skills/dataverse-schema-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill provides guidance on designing Dataverse table schemas and data models. Use when users ask about "Dataverse table design", "Dataverse schema", "Dataverse relationships", "Dataverse columns", "data modeling Dataverse", "Dataverse best practices", or need help designing their data structure.
new_, cr123_)new_Project, new_Task)new_projectname, new_startdate)# Basic table
client.create_table("new_Project", {
"new_ProjectName": "string", # Text column
"new_Description": "string", # Multi-line text
"new_Budget": "decimal", # Currency/decimal
"new_StartDate": "datetime", # Date and time
"new_IsActive": "bool", # Yes/No
"new_Priority": Priority # Choice/enum
})
# Single line (max 4000 chars)
"new_Name": "string"
# Multi-line text (memo)
"new_Description": "string" # Will be nvarchar(max)
# Integer
"new_Quantity": "int"
# Decimal (with precision)
"new_Amount": "decimal" # Default precision
# Currency (use decimal with formatting)
"new_Budget": "decimal"
# Date and time
"new_StartDate": "datetime"
# Date only (format in app)
"new_DueDate": "datetime"
# Yes/No
"new_IsActive": "bool"
"new_IsApproved": "bool"
from enum import IntEnum
class Status(IntEnum):
DRAFT = 1
SUBMITTED = 2
APPROVED = 3
REJECTED = 4
class Priority(IntEnum):
LOW = 1
MEDIUM = 2
HIGH = 3
# Create table with choices
client.create_table("new_Request", {
"new_Name": "string",
"new_Status": Status,
"new_Priority": Priority
})
Parent table has many child records.
Account (1) ←→ (N) Contact
└── An account has many contacts
Project (1) ←→ (N) Task
└── A project has many tasks
Implementation:
@odata.bind# Create contact linked to account
contact = {
"firstname": "John",
"lastname": "Doe",
"[email protected]": f"/accounts({account_id})"
}
client.create("contact", contact)
Records in both tables can relate to multiple records in the other.
Account (N) ←→ (N) Contact
└── Contacts can be related to multiple accounts
Note: N:N relationships require creating an intersection entity via the UI or advanced API calls.
Table references itself (e.g., employee hierarchy).
Employee
├── new_ManagerId → Employee
└── Parent employee record
Account (Master)
├── new_AccountNumber
├── new_Name
└── Contacts (Detail)
├── new_FirstName
├── new_LastName
└── _parentcustomerid_value (FK)
new_Request
├── new_Name
├── new_Status (Draft → Submitted → Approved/Rejected)
├── new_SubmittedOn
├── new_ApprovedBy
└── new_ApprovedOn
new_Order
├── new_OrderNumber
├── new_Status
├── createdon (system)
├── createdby (system)
├── modifiedon (system)
└── modifiedby (system)
# Add new columns
client.create_columns("new_Project", {
"new_CompletionPercentage": "int",
"new_ActualEndDate": "datetime"
})
# Remove columns
client.delete_columns("new_Project", ["new_OldColumn"])
references/table-design.md for detailed patternsreferences/relationships.md for relationship examplesreferences/performance.md for optimization tipstools
# dataverse-web-apps This skill provides guidance on building web applications (any language) that connect to Microsoft Dataverse. Use when users ask about ".NET Dataverse", "Node.js Dataverse", "JavaScript Dataverse", "REST API Dataverse", "web app Dataverse", "OAuth Dataverse", or need help with web application integration. ## Dataverse Web API All languages can access Dataverse via the OData Web API. **Base URL:** `https://yourorg.api.crm.dynamics.com/api/data/v9.2/` ### Authentication
tools
# dataverse-sdk This skill provides guidance on using the PowerPlatform Dataverse Client SDK for Python. Use when users ask about "Dataverse SDK", "Dataverse Python", "DataverseClient", "Dataverse authentication", "Dataverse CRUD operations", "create Dataverse records", "query Dataverse", "Dataverse connection", or need help with the Microsoft Dataverse Python SDK. ## Quick Start Install the SDK: ```bash pip install PowerPlatform-Dataverse-Client azure-identity ``` Basic setup: ```python fro
tools
# dataverse-queries This skill provides guidance on querying data from Microsoft Dataverse. Use when users ask about "Dataverse query", "OData filter", "Dataverse SQL", "FetchXML", "query Dataverse records", "Dataverse filter syntax", "search Dataverse", or need help constructing queries. ## Query Methods The Dataverse SDK supports two query methods: 1. **OData queries** - Standard Web API query syntax 2. **SQL queries** - T-SQL-like syntax (read-only) ## OData Query Basics ```python # Basi
tools
# dataverse-python-apps This skill provides guidance on building Python applications that use Microsoft Dataverse as a database. Use when users ask about "Python Dataverse app", "Flask Dataverse", "FastAPI Dataverse", "Dataverse backend", "Python API with Dataverse", "Dataverse data pipeline", or need help building Python applications with Dataverse. ## Architecture Patterns ### Basic Application Structure ``` my-dataverse-app/ ├── app/ │ ├── __init__.py │ ├── dataverse_client.py # Dat