feat(integrations): add Dynamics 365 CRM
Merged
BI
2mo ago+7294+7294+0123456789012345678901234567890123456789-45-45-01234567890123456789
Summary
- add a ten-operation Microsoft Dynamics 365 CRM block backed by eight isolated CRM tool modules
- add environment-bound Microsoft Dataverse OAuth while preserving legacy Dataverse credentials and flows
- enforce credential-derived environments, strict response parsing, redirect-safe bearer handling, and bounded one-page pagination
- preserve the exact Dataverse
nextLinkwhile pairing it with the page size required for the next request - align Opportunity Close and Case Resolution optionality and description limits with Microsoft metadata
Compatibility and safety
- supported Dynamics UI paths prevent credential rebinding; equivalent server-side enforcement is tracked in #6716 and remains a merge prerequisite
- existing
microsoft_dataverse_*implementations and documentation are unchanged; shared generated registries change additively to register Dynamics - a narrowly gated credential-selector policy enforces Dynamics environment matching; no data selectors or selector API routes were added
- adds no Desktop, service-account, migration, credential-framework, custom OAuth-route, or shared-transport work
- limits this version to delegated OAuth for public-cloud Dataverse environments
Validation
- focused Dynamics/OAuth/executor suite at exact head: 340 passed
- exact-head CI: 25,512 passed / 41 skipped; build, lint/test, CodeQL, Greptile, Cursor Bugbot, Vercel, companion, and GitGuardian are green
- local full repository
bun run test: Sim reported 25,507 passed / 46 skipped; setup and all other package suites also passed - type-check, lint, all 26 audits, API/client/request boundaries, canvas, metadata, catalog, migrations, and
git diff --checkpassed - lifecycle action contracts are statically matched to Microsoft documentation; live mutations remain UNVERIFIED because no authorized disposable sandbox was available
- nonempty callback scope sets that contain no resource-qualified scope remain an intentional compatibility risk pending sanitized live callback evidence
Merge prerequisite
Do not merge until #6716 lands and this branch is rebased onto that platform fix.