Microsoft Dynamics 365
Sync customer profiles and attributes from your data warehouse into Microsoft Dynamics 365 via Dataverse Web API
Prerequisites
Before creating the destination in DinMo, you need:
A Dynamics 365 environment with Dataverse enabled.
An Azure Entra ID (Azure AD) tenant for this environment.
A Web API endpoint for your Dataverse environment, for example:
https://org1234567.crm4.dynamics.com/api/data/v9.2/An App registration in Entra ID configured for client credentials.
An Application user in Dataverse based on this app registration, with a security role that grants access to the tables DinMo will write to.
You will need the following values to configure the destination:
Web API endpoint
Tenant ID
Client ID
Client Secret
Step 1 – Find your Web API endpoint
Sign in to Dynamics 365 and open the environment where you want to sync data.
Go to Advanced Settings → Settings → Customizations → Developer Resources.
Copy the Web API URL, which looks like:
https://org1234567.crm4.dynamics.com/api/data/v9.2/This value will be used as the Web API endpoint in DinMo.

Step 2 – Create an App registration (client credentials)
Open the Azure portal and navigate to Microsoft Entra ID.
Go to App registrations → New registration.
Set:
Name: e.g.
DinMo – Dynamics 365Supported account types: Accounts in this organizational directory only
After creation, note:
Application (client) ID → will be the Client ID
Directory (tenant) ID → will be the Tenant ID
In Certificates & secrets, create a New client secret:
Copy the secret value and store it securely. This will be the Client Secret used by DinMo.
No redirect URI is required for client credentials.
DinMo will use these values to request OAuth2 access tokens via the client_credentials flow.
Step 3 – Create the Application user in Dataverse
To allow the app to access data in Dataverse:
Go to the Power Platform admin center and open your Dynamics environment.
Under Settings, navigate to Users + permissions → Application users.
Click New app user (or + New) and:
Select your environment.
Choose the App registration created in the previous step.
Assign an appropriate Security role, for example:
A dedicated role such as
DinMo Integration, with:Read / Write on the relevant tables (e.g.
contacts,accounts,leads, custom tables).Read on reference / lookup tables as needed.
Save the user.
This Application user will appear as the “actor” for all writes performed by DinMo in Dynamics 365.
Step 4 – Create the Dynamics 365 destination in DinMo
In DinMo, go to the Destinations section.
Click New destination.
Select Microsoft Dynamics 365 from the list of destination platforms.
In the connection form, fill in the following fields:
Authentication settings
Web API endpoint The full Dataverse Web API URL, for example:
https://org1234567.crm4.dynamics.com/api/data/v9.2/Tenant ID Your Directory (tenant) ID from the App registration, for example:
3ae5e114-e015-4601-9485-d6f4748c0182Client ID The Application (client) ID of the App registration, for example:
c91bf891-e59c-41c0-971e-21fd84d20cc3Client Secret The client secret value created in Certificates & secrets. DinMo will encrypt this value at rest.
Click Test connection to verify that DinMo can obtain a token and reach the Web API endpoint.
Save the destination.
Once the destination is created, it can be reused across multiple activations.
Supported objects and sync behavior
DinMo connects to Dataverse and writes directly into tables used by Dynamics 365 applications.
Typical use cases include:
Contacts
Sync customer identifiers, personal data, and marketing attributes into the
contactstable.
Accounts
Sync company-level information into the
accountstable and link contacts to accounts.
Leads / Opportunities (optional)
Enrich or create leads/opportunities based on segments in DinMo.
Custom Tables
Write to custom Dataverse tables when your Dynamics implementation uses them for advanced processes.
For each activation, you will:
Choose the target table (e.g.
contacts).Define the primary key strategy (e.g. Dataverse GUID, alternate keys using external IDs or email).
Map DinMo fields to Dataverse columns.
Configure how DinMo handles create / update (upsert) and optional deletions.
Best practices
Use alternate keys for idempotent syncs Configure alternate keys on fields like external customer ID or email address so DinMo can safely upsert records without relying solely on GUIDs.
Limit the security role to what DinMo needs Start with a broad role during setup, then refine it to only the tables and operations required for your use cases.
Use a dedicated environment for testing Validate your mappings and sync behaviour in a sandbox environment before enabling syncs against production.
Monitor API limits Dynamics and Dataverse enforce API limits and throttling. Prefer incremental syncs and batch sizes aligned with Microsoft recommendations.
Troubleshooting
403 – Forbidden
Check that the Application user exists in the target environment.
Verify that the Application user has a security role with at least Read/Write on the relevant tables.
Confirm that the Web API endpoint host matches the one used in the OAuth scope (internally used by DinMo).
401 – Unauthorized
Tenant ID, Client ID, or Client Secret is incorrect or expired.
The App registration does not allow client credentials, or the secret has been deleted or rotated.
Connection test fails
Confirm that the Web API endpoint is reachable and points to the correct environment.
Make sure the Dynamics environment is active and Dataverse is provisioned.
If you want, I can now write the “Activation configuration” section (field mapping examples for Contacts/Accounts, primary keys, and recommended defaults) in the same style so you can plug it directly into your docs.
Last updated