GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — feat(integrations): add Dynamics 365 CRM by BillLeoutsakosvl346 · Pull Request #6714 · simstudioai/sim

Conversation

@BillLeoutsakosvl346

@BillLeoutsakosvl346 BillLeoutsakosvl346 commented Aug 14, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

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 nextLink while 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 --check passed
  • 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.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

greptile-apps[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction
@vercel

vercel Bot commented Aug 14, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
docs Skipped Skipped Aug 28, 2026 7:55pm

Request Review

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@cursor

cursor Bot commented Aug 14, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown

PR Summary

High Risk
Touches OAuth linking, callback scope validation, credential identity binding, and token resolution for Microsoft Dataverse—security-sensitive auth paths alongside a large new CRM surface. PR description also flags a merge dependency on server-side credential rebinding enforcement (#6716).

Overview
Adds a Microsoft Dynamics 365 CRM integration and workflow block with ten CRM-focused operations (list/get/create/update/search on standard tables, list owners, assign, qualify lead, close opportunity/case), backed by dedicated microsoft_dynamics_365_* tools while the generic Microsoft Dataverse block stays available for custom tables and delete.

Environment-bound OAuth is new for Dynamics paths: connect/reconnect flows collect a public-cloud Dataverse environment URL, request per-environment Microsoft scopes, validate link/callback scopes in auth, and persist an internal environment marker so credentials are not rebound across environments. Legacy unbound Dataverse credentials keep working; workflow credential selection enforces a matching environment when the block depends on environmentUrl. Token resolution projects instanceUrl from bound scopes for CRM calls.

Docs, integrations catalog, and icon mappings register microsoft_dynamics_365; connect modals, credential detail reconnect, and OAuth return handling wire in the Dataverse environment field and dedicated connect hook.

Reviewed by Cursor Bugbot for commit a2842cf. Bugbot is set up for automated code reviews on this repo. Configure here.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@greptile-apps

greptile-apps Bot commented Aug 14, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Greptile Summary

Adds a Microsoft Dynamics 365 CRM integration backed by environment-bound Dataverse OAuth and eight CRM tool modules.

  • Registers a ten-operation workflow block, generated tool metadata, documentation, icons, and deployment configuration.
  • Adds environment-specific OAuth connection, reconnection, credential-selection, and token-resolution behavior.
  • Implements bounded listing and search plus record creation, retrieval, updating, lead qualification, opportunity closure, and case resolution.

Confidence Score: 5/5

The PR appears safe to merge from the reviewed follow-up scope because the previously reported redirect credential leak has been fixed.

No blocking failure remains from the prior redirect-safety finding: every Dynamics request enables authorization stripping, the shared transport enforces it on redirects, and the regression test covers all eight request definitions.

Important Files Changed

Filename Overview
apps/sim/tools/microsoft_dynamics_365/create_record.ts Defines environment-scoped record creation and now strips authorization before following redirects.
apps/sim/tools/microsoft_dynamics_365/dynamics_crm.test.ts Exercises shared CRM behavior and verifies redirect-safe request configuration across all eight tool definitions.
apps/sim/lib/oauth/microsoft-dataverse.ts Implements public-cloud environment normalization, environment-qualified scopes, and credential-binding classification.
apps/sim/app/workspace/[workspaceId]/components/connect-oauth-modal/connect-oauth-modal.tsx Routes Dynamics connections through the environment-bound Dataverse OAuth flow while retaining the generic OAuth path.
apps/sim/blocks/blocks/microsoft_dynamics_365.ts Defines the ten-operation Dynamics workflow block and maps its operation-specific parameters to eight CRM tools.

Sequence Diagram

sequenceDiagram
  actor User
  participant UI as Workflow or integration UI
  participant OAuth as Dataverse OAuth
  participant Executor as Tool executor
  participant CRM as Dynamics 365 CRM
  User->>UI: Select environment and connect
  UI->>OAuth: Request environment-qualified scopes
  OAuth-->>UI: Environment-bound credential
  User->>UI: Configure CRM operation
  UI->>Executor: Execute with credential and environment
  Executor->>CRM: Dataverse API request
  Note over Executor,CRM: Authorization removed before following redirects
  CRM-->>Executor: Structured CRM response
  Executor-->>UI: Normalized operation output
Loading

Reviews (7): Last reviewed commit: "test(integrations): isolate Dynamics OAu..." | Re-trigger Greptile

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

greptile-apps[bot]
greptile-apps Bot reviewed Aug 14, 2026
View reviewed changes
Comment thread apps/sim/tools/microsoft_dynamics_365/create_record.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

cursor[bot]
cursor Bot reviewed Aug 14, 2026
View reviewed changes
Comment thread apps/sim/lib/oauth/microsoft-dataverse.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

@vercel
vercel Bot deployed to Preview August 14, 2026 23:26
View deployment
@BillLeoutsakosvl346 BillLeoutsakosvl346 mentioned this pull request Aug 14, 2026
fix(credentials): bind OAuth reconnect drafts to exact flows #6716
Open
@vercel
vercel Bot temporarily deployed to Preview August 14, 2026 23:53 Inactive
@BillLeoutsakosvl346

BillLeoutsakosvl346 commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

@greptile please re-review the latest commit.

greptile-apps[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@BillLeoutsakosvl346

BillLeoutsakosvl346 commented Aug 14, 2026

Copy link
Copy Markdown
Contributor Author

@cursor review

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

cursor[bot]
cursor Bot reviewed Aug 14, 2026
View reviewed changes
Comment thread apps/sim/tools/microsoft_dynamics_365/list_records.ts Resolved

Uh oh!

There was an error while loading. Please reload this page.

@BillLeoutsakosvl346
BillLeoutsakosvl346 force-pushed the feat/microsoft-dynamics-365 branch from d757dd4 to 2a508dd Compare August 15, 2026 00:15
@BillLeoutsakosvl346

BillLeoutsakosvl346 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor Author

@cursor review

cursor[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@BillLeoutsakosvl346

BillLeoutsakosvl346 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor Author

@greptile please re-review the rebased latest commit.

greptile-apps[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@vercel
vercel Bot deployed to Preview August 15, 2026 00:22
View deployment
cursor[bot]
cursor Bot reviewed Aug 15, 2026
View reviewed changes

@cursor cursor Bot left a comment

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit 2a508dd. Configure here.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@BillLeoutsakosvl346
BillLeoutsakosvl346 force-pushed the feat/microsoft-dynamics-365 branch from 2a508dd to a2842cf Compare August 15, 2026 01:32
@BillLeoutsakosvl346

BillLeoutsakosvl346 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor Author

@greptile please re-review the latest exact-head commit. The update preserves the opaque Dataverse nextLink with a paired page-size contract and aligns Opportunity Close/Case Resolution metadata limits.

greptile-apps[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@BillLeoutsakosvl346

BillLeoutsakosvl346 commented Aug 15, 2026

Copy link
Copy Markdown
Contributor Author

@cursor review

cursor[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

cursor[bot]
cursor Bot reviewed Aug 15, 2026
View reviewed changes

@cursor cursor Bot left a comment

Copy link
Copy Markdown

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

Reviewed by Cursor Bugbot for commit a2842cf. Configure here.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@vercel
vercel Bot deployed to Preview August 15, 2026 01:37
View deployment
Bill Leoutsakos and others added 6 commits August 28, 2026 12:10
Bill Leoutsakos @waleedlatif1
feat(integrations): add Dynamics 365 CRM
f8b2812
Bill Leoutsakos @waleedlatif1
fix(integrations): harden Dynamics environment requests
57372b7
Bill Leoutsakos @waleedlatif1
fix(integrations): align Dynamics paging and lifecycle contracts
3615dbc
@waleedlatif1
fix(integrations): validate Dynamics 365 contracts
8164dc3
@waleedlatif1
fix(integrations): harden Dynamics OAuth binding
e7a9884
@waleedlatif1
improvement(integrations): simplify Dynamics OAuth UI
2562939
@waleedlatif1
waleedlatif1 force-pushed the feat/microsoft-dynamics-365 branch from a2842cf to 2562939 Compare August 28, 2026 19:45
@waleedlatif1

waleedlatif1 commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

@greptile

greptile-apps[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@waleedlatif1
fix(docs): sync Dynamics integration manifest
37e5bc2
@vercel
vercel Bot temporarily deployed to Preview August 28, 2026 19:48 Inactive
@waleedlatif1

waleedlatif1 commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

@greptile

greptile-apps[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@waleedlatif1
test(integrations): isolate Dynamics OAuth mutation
f4cc12f
@vercel
vercel Bot temporarily deployed to Preview August 28, 2026 19:55 Inactive
@waleedlatif1

waleedlatif1 commented Aug 28, 2026

Copy link
Copy Markdown
Collaborator

@greptile

greptile-apps[bot] reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@waleedlatif1
waleedlatif1 merged commit cc5affa into staging Aug 28, 2026
26 checks passed

Uh oh!

There was an error while loading. Please reload this page.

@waleedlatif1
waleedlatif1 deleted the feat/microsoft-dynamics-365 branch August 28, 2026 20:10
@TheodoreSpeaks TheodoreSpeaks mentioned this pull request Aug 28, 2026
v0.8.16: aws lambda, dynamics 365, actorless run fixes, usage chart #7224
Merged

This branch was previously deployed

1 inactive deployment
Preview — f4cc12f5 Deployed Aug 28, 2026 by vercel[bot]
View deployment
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@greptile-apps greptile-apps[bot] greptile-apps[bot] left review comments
@cursor cursor[bot] cursor[bot] left review comments

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@BillLeoutsakosvl346 @waleedlatif1
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.