Skip to main content

Microsoft Dynamics 365 Integration

What credentials we need for Microsoft Dynamics 365, Entra ID App Registration + Dataverse Application User setup, and default field mapping.

Microsoft Dynamics 365 is Uni Compare's native-supported CRM. The integration uses an Application User in your Dynamics environment, created from an Azure App Registration.

Microsoft Dynamics 365 is fully supported by Uni Compare, and connects through an Azure App Registration and an Application User in your Dynamics environment.

What we need from you

  • The Microsoft Entra ID Tenant ID (a UUID, found in Azure portal → Microsoft Entra ID → Overview).

  • The Application (Client) ID of a Microsoft Entra ID App Registration you create.

  • A Client Secret value for that App Registration. Also tell us the secret's expiry date so we can request a rotation a couple of weeks before it expires.

  • The Dataverse environment URL, in the form https://orgname.crm4.dynamics.com or similar (the exact host varies by your tenant's region).

  • If you have a separate Dataverse sandbox environment, a parallel set of all the above for the sandbox. We use it for the pre-go-live test.


Where in Azure / Dynamics to set it up

Step 1. Create the App Registration

In Azure portal, navigate to App registrationsNew registration.
Name it "Uni Compare Lead Delivery". Supported account types: "Accounts in this organizational directory only (single tenant)". Leave the Redirect URI blank.
Press Register.

After registration, on the Overview page, copy both the Application (client) ID and the Directory (tenant) ID. You'll need both when sending credentials (see the Verify section below).

Step 2. Generate the Client Secret

On the new App Registration, go to Manage -> "Certificates & secrets" → New client secret. Give it a clear description and choose an expiry (Microsoft's maximum is twenty-four months as of 2025). Press Add button. Copy the secret Value immediately. Microsoft displays it once.

Step 3. Grant API permissions

On the App Registration, go to "API permissions" → Add a permission → Dynamics CRM (not Microsoft Graph). Choose "Delegated permissions" → user_impersonation. Add. Then click "Grant admin consent for [your tenant]". This requires Global Admin or Privileged Role Administrator.

Step 4. Create the Application User and assign a role

In Power Platform Admin Center, go to Environments → [your Dynamics 365 environment] → Settings → Users + permissions → Application users → New app user.

Click "Edit App", search for "Uni Compare Lead Delivery", select it. Set the Business Unit to your default. Then click "Edit roles" and assign a Salesperson; for tighter scope, create a custom role with just View, Create and Write on Contact. Press Create button.


Verify before sending

Before sending the credentials, confirm the following:

  1. Credential package complete. You have all of:

    • Tenant ID

    • Application (Client) ID

    • Client Secret value (not the Secret ID)

    • Dataverse environment URL

  2. IDs are UUIDs. The Tenant ID and Application (Client) ID should both be UUIDs (32 hex characters with dashes, like aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee). If either is a short numeric ID or a name, you have copied the wrong value.

  3. Client Secret captured. You copied the secret Value (not the Secret ID) immediately after creation. Microsoft only displays the Value once. If you missed it, generate a new secret and copy it before navigating away.

  4. Application User and admin consent in place. The Application User exists in the Dataverse environment, is linked to your App Registration, and has a security role granting Create and Write on Contact. Admin consent for the Dynamics CRM API has been granted.

  5. Channel. Generate a one-time encrypted link using our secrets page with all four credential items above, then email the link to your Uni Compare contact.

Important: Never paste credentials into a web chat, plain email, or any unencrypted attachment.


Field mapping

We create Contact records, deduplicated by email. If a contact with the same email already exists, we update it; otherwise we create a new one.

We pass each lead to you with the following fields, mapped onto built-in Contact columns where possible and at times onto custom columns otherwise (must be agreed with you at onboarding for the exact custom-column names).

If your environment already has columns for some of these, please share these with the Uni Compare team so we can map onto those:

  • First name and last name → built-in firstname, lastname

  • Email → built-in emailaddress1

  • Phone (where given) → built-in telephone1

  • Postcode → built-in address1_postalcode

  • Address (where given) → built-in address1_line1

  • Study Level (undergraduate or postgraduate) → custom column

  • Start Year → custom column

  • Subject Area (where given) → custom column

  • Free-text enquiry message (where given) → custom column

  • Lead type → custom column

  • Marketing consent flag → custom boolean column (you choose how to use it in your marketing automation)

  • Uni Compare lead identifier → custom column (for traceability)

Frequently asked questions

Why does the built-in Microsoft Dynamics integration node not work for Contacts?

Most off-the-shelf Dynamics integration nodes have limited entity coverage. We use HTTP requests against the Dataverse Web API directly, which gives full coverage of any standard or custom entity. From your side, this makes no difference; you grant the same Application User access.

Why do our custom columns have prefixes like cra65_?

Dataverse adds your publisher prefix to custom column names automatically. The exact prefix depends on your environment's default solution publisher (you can see it in Power Apps → Solutions). For example, a column you create as "Level" appears in the API as cra65_level or similar. You don't need to remove or change the prefix. We'll capture the actual API names from your environment at onboarding and map our fields onto them.

Can we restrict the Application User to specific records or columns?

Yes. Dataverse security roles are highly granular. You can scope to specific entities, columns, and (with field-level security profiles) even individual fields. For the integration, we need Create and Write on the Contact entity; anything beyond that is unnecessary.

What happens when the Client Secret expires?

Authentication fails, and the integration stops delivering. If you tell us the expiry date in advance, we will request a fresh secret two weeks before. If a secret expires unexpectedly, contact us via the support chat, and we will guide the renewal.

Our IT team uses certificates rather than client secrets. Is that supported?

Yes. Certificate-based authentication is more robust than client secrets and is recommended for production. Tell us via the support chat, and we'll share the certificate setup steps.

Useful links

Did this answer your question?