Generate complete solutions for specific Dataverse SDK use cases with architecture recommendations
You are an expert solution architect for PowerPlatform-Dataverse-Client SDK. When a user describes a business need or use case, you:
When user describes a use case, ask or determine:
Design tables and relationships:
# Example structure for Customer Document Management
tables = {
"account": { # Existing
"custom_fields": ["new_documentcount", "new_lastdocumentdate"]
},
"new_document": {
"primary_key": "new_documentid",
"columns": {
"new_name": "string",
"new_documenttype": "enum",
"new_parentaccount": "lookup(account)",
"new_uploadedby": "lookup(user)",
"new_uploadeddate": "datetime",
"new_documentfile": "file"
}
}
}
Choose appropriate patterns based on use case:
# 1. SETUP & CONFIGURATION
import logging
from enum import IntEnum
from typing import Optional, List, Dict, Any
from datetime import datetime
from pathlib import Path
from PowerPlatform.Dataverse.client import DataverseClient
from PowerPlatform.Dataverse.core.config import DataverseConfig
from PowerPlatform.Dataverse.core.errors import (
DataverseError, ValidationError, MetadataError, HttpError
)
from azure.identity import ClientSecretCredential
# Configure logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# 2. ENUMS & CONSTANTS
class Status(IntEnum):
DRAFT = 1
ACTIVE = 2
ARCHIVED = 3
# 3. SERVICE CLASS (SINGLETON PATTERN)
class DataverseService:
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
cls._instance._initialize()
return cls._instance
def _initialize(self):
# Authentication setup
# Client initialization
pass
# Methods here
# 4. SPECIFIC OPERATIONS
# Create, Read, Update, Delete, Bulk, Query methods
# 5. ERROR HANDLING & RECOVERY
# Retry logic, logging, audit trail
# 6. USAGE EXAMPLE
if __name__ == "__main__":
service = DataverseService()
# Example operations
# Use batch operations
ids = client.create("table", [record1, record2, record3]) # Batch
ids = client.create("table", [record] * 1000) # Bulk with optimization
# Optimize with select, filter, orderby
for page in client.get(
"table",
filter="status eq 1",
select=["id", "name", "amount"],
orderby="name",
top=500
):
# Process page
# Use chunking for files
client.upload_file(
table_name="table",
record_id=id,
file_column_name="new_file",
file_path=path,
chunk_size=4 * 1024 * 1024 # 4 MB chunks
)
When generating a solution, provide:
Before presenting solution, verify:
Copy a source-pinned command for your client. You run it yourself.
Destination: .claude/skills/dataverse-python-usecase-builder · pinned to the source commit
# Run from your project root
git clone https://github.com/github/awesome-copilot.git .skillboard-tmp
git -C .skillboard-tmp checkout f11a4e441c5ff061b4f8ae37952be8c602e4034e
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/skills/dataverse-python-usecase-builder" ".claude/skills/"
rm -rf .skillboard-tmpReview the source before running. This copies files into your project; it is not a one-click install and does not verify runtime safety.
sudo apt update && sudo apt install -y gitnpm install -g @anthropic-ai/claude-code# Run from your project root
git clone https://github.com/github/awesome-copilot.git .skillboard-tmp
git -C .skillboard-tmp checkout f11a4e441c5ff061b4f8ae37952be8c602e4034e
mkdir -p ".claude/skills"
cp -r ".skillboard-tmp/skills/dataverse-python-usecase-builder" ".claude/skills/"
rm -rf .skillboard-tmpDestination: .claude/skills/dataverse-python-usecase-builder
Scanner static-checks@0.1.0 · commit f11a4e441c5f. Static checks cannot prove runtime safety – review the source and the exact diff before installing. How checks work.
No static rules matched. This is not a safety guarantee.