Integrations
Microsoft Dynamics 365
Connect Microsoft Dynamics 365, obtain the required access and configure permitted actions.
The API adapter is implemented. Validate your own account and authorized actions before routing production calls.
Before you start
Connect the account belonging to this business and workspace. Vendor subscriptions, API limits and role permissions still apply.
API: Microsoft Dataverse Web API v9.2 (Dynamics 365 CRM tables)
Authentication: Microsoft Entra application user with client credentials (recommended for server automation), or delegated OAuth with refresh token
Get access and connect
- Use a Dataverse/Dynamics 365 environment managed at https://admin.powerplatform.microsoft.com/ and register an application in Microsoft Entra at https://entra.microsoft.com/.
- Record its Application (client) ID and Directory (tenant) ID. Under Certificates & secrets create a client secret and copy its Value, not its Secret ID.
- For server-to-server mode, create a Dataverse application user for that Entra application in the target environment and assign a custom security role with only the required table privileges.
- In Verbatik enter the environment HTTPS origin, clientId, clientSecret and tenantId. Use authMode client-credentials. Verbatik requests the environment's /.default scope from the tenant's fixed Microsoft token endpoint and renews the token before expiry.
- For delegated OAuth instead, configure the application permission/consent flow for Dynamics CRM user_impersonation plus offline_access, acquire a refresh token, enter it with the same client credentials, and use authMode oauth.
- Run Test connection (WhoAmI), then enable actions. Record identifiers must be actual Dataverse GUIDs; relationship fields use OData bindings to known records.
Account requirements
- The target environment must include the CRM tables being used. A client-credentials token alone is insufficient without a Dataverse application user and security role.
- Grant read/create/write and Append/Append To privileges as required for contacts, accounts, leads, opportunities, tasks, phonecalls and annotations. Annotation creation also requires Notes privileges on related records.
- The current adapter accepts commercial *.crm[region].dynamics.com environment origins, including their .api variants. Sovereign cloud deployments require additional reviewed identity and API hosts.
- Access-token-only setup is temporary; automatic renewal requires the complete tenant/client configuration. The customer's Entra and Dataverse policies govern consent, secret expiry and access.
Permissions
https://<environment-origin>/.default (client credentials)Dynamics CRM user_impersonation (delegated)offline_access (delegated renewal)
Grant the subset needed for the actions you enable. API scopes do not override the connected user’s record permissions or vendor validation rules.
Connection fields
accessToken— Dataverse access token (optional with automatic renewal) (optional). Secret fields are saved as workspace credentials.clientId— OAuth client ID (automatic renewal) (optional). Secret fields are saved as workspace credentials.clientSecret— OAuth client secret (automatic renewal) (optional). Secret fields are saved as workspace credentials.refreshToken— OAuth refresh token (automatic renewal) (optional). Secret fields are saved as workspace credentials.tenantId— Microsoft Entra tenant ID (automatic renewal) (optional). Secret fields are saved as workspace credentials.instanceUrl— Dataverse environment URL (required).authMode— Renewal mode: client-credentials or oauth (optional).
Available actions
test_connection— Read · available for after-call automation. Read account or schema metadata to verify credentials without creating records.find_contact— Read · available for after-call automation. Find contacts by exact email using an escaped OData filter.get_record— Read · available for after-call automation. Read a supported Dataverse record by GUID.create_contact— Write · available for after-call automation. Create a Dataverse contact.create_record— Write · available for after-call automation. Create a supported Dataverse record using table logical names and tenant-required field values.update_record— Write · available for after-call automation. Update only supplied properties on a supported Dataverse record.create_task— Write · available for after-call automation. Create a follow-up task, optionally regarding a contact.add_note— Write · available for after-call automation. Attach a note to a known Dataverse contact.log_call— Write · available for after-call automation. Record an incoming or outgoing Dataverse phone-call activity. Does not place a phone call.
Verify before going live
Run Test connection and one read action against a known permitted record. Then test each intended write in an authorized sandbox. Check the provider’s own record and the Verbatik receipt. Publish the agent after assigning its tools. If a write has an unknown outcome, reconcile it with the vendor before trying again.