Connect Microsoft Dynamics 365 through Dataverse to bring customer data into CustomerGauge. Choose Multi-Object to import account, contact and survey data together, or Signals to submit customer interaction text for Signal processing.
This guide covers the current integration wizard.
For existing integrations using the unlisted Accounts, Contacts or Surveys types, refer to their setup guide.
Choose your integration type
Type | Use it for | What to prepare |
|---|---|---|
Multi-Object | Import account and contact details together with survey records in one integration. Survey records enter the normal invitation process. | Contact details, the delivery method and survey context. Include an account reference when you want to create or update account information. |
Signals | Import text such as customer notes or conversation content for Signal processing, with optional account and contact context. This does not send survey invitations. | A non-empty Source Content field. You can also supply a Survey reference and Survey Completed Date. |
Multi-Object can use fields from the main Dynamics object and related objects in the same query. You do not need separate Account and Contact integrations for the data included in that pull.
Before you start
You need Administrator access in CustomerGauge.
Set up a Dynamics authentication using Microsoft Dynamics How to Authenticate. An existing authentication can be reused.
The Dynamics application user needs access to read the objects and fields in your query. Activating the integration also requires write permission on the main Dynamics object, even when flagging is turned off.
Prepare a FetchXML query that selects the records and fields you want to import. Your Dynamics administrator can help with logical field names, relationships and permissions.
For Multi-Object survey invitations, make sure the relevant survey delivery setup is ready in CustomerGauge. Importing records does not configure your campaigns.
Pull volume: Each run requests up to five pages of 5,000 records, for up to 25,000 records when full pages are returned. Actual volume can be lower because of the query or Dataverse limits. Use separate, appropriately filtered pulls for larger datasets.
Repeat pulls: The current integration does not advance your FetchXML date filters after a run. Define which records are eligible on each run. If you use flagging to exclude previously pulled records, your query must filter on the flag field.
1 Create the integration
Go to Data → Integrations and open Microsoft Dynamics.
Click New Integration.
Choose Multi-Object or Signals to open the Dynamics 365 Integration wizard.
The steps are Settings → Authentication → Pull Query → Pull Mapping → Activation. Turning on Flag pulled records adds Flag Mapping before Activation.
Use Save and Next to save changes and continue, or Next when the step is unchanged.
2 Configure Settings
Enter a descriptive Integration name, then choose a Schedule.
Schedule | Behavior |
|---|---|
10 Minutes | Pulls every 10 minutes, throughout the day. |
Hourly | Pulls every hour from Start at through Stop at, every day. Stop at must be later than Start at on the same day. |
Daily | Pulls once each day at the selected time. |
Weekly | Pulls on the selected days at each selected time. Choose at least one day and one time. |
Manual | Runs only when you trigger a pull. |
All schedule times are UTC. Time selections use 10-minute intervals. For example, an Hourly schedule from 08:20 to 17:20 runs at 08:20, 09:20 and so on through 17:20 UTC.
Turn on Flag pulled records if you want to update fields on the main Dynamics object after a pull. Leave it off if you do not need this write-back.
For initial testing, choose Manual.
3 Select Authentication
Select an existing Dynamics Authentication, or click New Authentication to create one.
A new authentication requires a name and these credentials:
Field | Value |
|---|---|
Directory (tenant) ID | The directory ID for the registered Microsoft application. |
Client ID | The application ID. |
Client Secret | The client secret value. |
Dynamics Domain | The environment hostname, such as |
Use the refresh button if a newly created authentication is not listed. Follow the authentication guide for the Microsoft-side setup.
4 Configure Pull Query
Enter your query in FetchXML.
Leave Endpoint (optional) blank to let CustomerGauge find the endpoint from the main object. If you supply it, use a relative API path beginning with
/, for example/api/data/v9.2/contacts.Click Validate query.
Continue after Query validated appears.
Validation checks the query against Dynamics and loads the available mapping fields. Editing the query or endpoint, or changing authentication, requires validation again.
Include the fields you need from the main object and any related objects. Use explicit aliases for related objects so mapping names are recognizable, such as acct.name. If aliases are omitted, CustomerGauge generates them. Always select the fields offered after validation. See Microsoft’s FetchXML joins guide for relationship syntax.
The following examples illustrate query structure. Adjust them for your environment and business rules before use. Their one-day lookback windows overlap when run repeatedly; they do not prevent the same records from being pulled again.
Multi-Object query example
This example selects recently modified active contacts with an email address and includes their parent account details.
<fetch>
<entity name="contact">
<attribute name="contactid" />
<attribute name="firstname" />
<attribute name="lastname" />
<attribute name="emailaddress1" />
<order attribute="contactid" />
<filter type="and">
<condition attribute="statecode" operator="eq" value="0" />
<condition attribute="emailaddress1" operator="not-null" />
<condition attribute="modifiedon" operator="last-x-days" value="1" />
</filter>
<link-entity name="account" from="accountid"
to="parentcustomerid" alias="acct" link-type="outer">
<attribute name="accountid" />
<attribute name="name" />
</link-entity>
</entity>
</fetch>Leave Endpoint blank, or use /api/data/v9.2/contacts.
Signals query example
This example selects recent text notes attached directly to contacts. The note text becomes the Signal’s Source Content; the linked contact supplies customer context. It uses the Dynamics Note table and its contact relationship.
<fetch>
<entity name="annotation">
<attribute name="annotationid" />
<attribute name="notetext" />
<order attribute="annotationid" />
<filter type="and">
<condition attribute="notetext" operator="not-null" />
<condition attribute="createdon" operator="last-x-days" value="1" />
</filter>
<link-entity name="contact" from="contactid"
to="objectid" alias="person" link-type="inner">
<attribute name="contactid" />
<attribute name="firstname" />
<attribute name="lastname" />
<attribute name="emailaddress1" />
</link-entity>
</entity>
</fetch>Leave Endpoint blank, or use /api/data/v9.2/annotations. This query does not import attachment contents or notes attached only to other object types. Flagging support must be checked separately for the main object.
5 Configure Pull Mapping
Map each CustomerGauge Field to a Dynamics 365 Field or Value.
Select a Dynamics field to use the value from each incoming record.
Turn on Fixed value to enter the same value for every record.
Click Add for additional mappings.
Complete every row or remove unused optional rows. Required rows cannot be removed.
Map each CustomerGauge field only once.
The available CustomerGauge fields depend on the selected integration type and your account configuration. Fields marked as required must be mapped; incoming records must also satisfy the field and delivery rules below.
Multi-Object mapping
For the contact and account query above, an email survey setup could use:
CustomerGauge field | Dynamics field or fixed value |
|---|---|
Account Reference |
|
Account Display Name |
|
Contact ID |
|
First Name |
|
Last Name |
|
| |
Delivery Vector | Fixed value: |
Touchpoint | Fixed value: an existing CustomerGauge touchpoint, if used by your survey setup |
Use the account reference convention already used in your CustomerGauge account. For example, if existing accounts use a business account number, select and map that field instead of introducing Dynamics record IDs as new account references.
A Multi-Object record needs an email address or phone number and a valid Delivery Vector. Supported values are email, sms, whatsapp and personal-link; the contact details must suit the chosen delivery method. Your account’s additional required fields still apply.
Account creation or updates require an Account Reference. CustomerGauge connects the account, contact and survey data from each imported row. Invitation processing follows your configured survey delivery rules.
Signals mapping
For the notes query above, map Source Content to notetext. Optional contact mappings are Contact ID → person.contactid, First Name → person.firstname, Last Name → person.lastname and Email → person.emailaddress1.
CustomerGauge field | Requirement |
|---|---|
Source Content | Required. Map the text to be processed, such as the note body or a transcript stored in a Dynamics text field. The value must be a non-empty string. |
Survey | Optional. Supply the reference of an existing CustomerGauge survey used for Signal processing, not a Dynamics record ID or the survey’s display name. |
Survey Completed Date | Optional. Supply a supported date value, such as |
Account and contact fields | Optional context, subject to your account’s field rules. Email and phone are not required by default for Signals; values supplied must be valid. |
Signals does not use Campaign ID or Delivery Vector. Source Content is submitted for Signal processing without sending an invitation.
If mapping Survey Completed Date, check the source format. A raw Dynamics timestamp may need conversion to a supported import format before it can be used.
6 Configure optional Flag Mapping
This step appears only when Flag pulled records is on.
Click Add.
Select a Dynamics 365 Field.
Enter the Value to write, or turn on Current date for a suitable date/time field.
Repeat for any other fields, then save and continue.
Each field can appear only once. You must complete at least one flag mapping when flagging is enabled. Choose values compatible with the Dynamics field type.
Only writable fields on the main object are offered. They must be selected in the query or used in a filter on that object. Fields from related objects can be imported, but cannot be updated through Flag Mapping.
For example, if your Dynamics administrator creates a date/time field named new_cg_pulledon on the main object, you can filter for records where it is empty and flag it using Current date. The field name is an example, not a built-in field.
Flagging also requires:
The main object’s record ID in the returned data. Include its primary ID field, such as
contactid, in the query.Standard tables: support for Dataverse
UpdateMultiple.Elastic tables:
partitionidincluded in the query and valid partition information for the records being updated.
A flag records the pull, not the outcome of a survey or Signal. Write-back uses the pulled records and runs separately from record import and subsequent processing. A successful flag does not prove that every row imported successfully, an invitation was sent or a Signal finished processing.
7 Save and activate
In Activation, use Send alert to under Failure Alert to select active CustomerGauge users by email. Add at least one recipient to help your team notice pull or flagging failures.
To start scheduled operation, turn on Activate this integration and click Save. Activation checks the configuration and Dynamics permissions. If an error appears, correct it and save again.
Leave activation off and click Save to keep the integration inactive. A Manual schedule never runs automatically, even when the integration is active.
Run a test pull
After saving the setup, reopen the integration, go to Activation and click Trigger. A saved integration can be triggered while inactive.
Trigger runs a real import using the saved configuration. It can create CustomerGauge records, start survey delivery for Multi-Object and update Dynamics fields when flagging is enabled. Use a query limited to the intended test records.
The trigger confirmation means the run was queued. Check its results before enabling recurring pulls.
Check pull and flagging results
From the integration list, click History to open Pull History. Review the run’s status, trigger, message and timestamps.
Files opens the files associated with the pull. Check the corresponding import results for accepted and failed records.
Flags opens Flag History. Expand an attempt to inspect its details.
Flag statuses include Open, InProgress, JobComplete, CompletedWithErrors and Failed. Mixed outcomes are possible: some Dynamics records may update while others fail.
A processed pull is separate from successful record import, invitation delivery and Signal processing. Check the relevant CustomerGauge records as well as the integration history.
Troubleshooting
Issue | What to check |
|---|---|
Authentication fails | Confirm the tenant ID, client ID, secret value, secret expiry and Dynamics hostname. Check the application user’s roles. |
Query validation fails | Confirm the FetchXML syntax, logical object and field names, relationships and read access. A supplied endpoint must begin with |
A mapping field is missing | Include it in the FetchXML and validate again. Use the alias-qualified field offered by the wizard. |
Pull Mapping will not continue | Complete required rows, remove incomplete optional rows and resolve duplicate CustomerGauge fields. Recheck mappings after changing the query. |
No writable root fields available | Select an updatable field on the main object, or include it in a root-object filter. Related-object fields are not eligible for flagging. |
Activation reports missing write permission | Grant the Dynamics application user write permission on the main object. This activation check also applies when flagging is off. |
Flagging cannot be enabled | Check UpdateMultiple support for a standard table, or include partitionid for an elastic table. Complete the flag mappings. |
The pull returns no records | Check the query filters and the application user’s access. An empty first page is recorded as an empty pull. |
The same data is pulled again | Review the query’s eligibility filters. Dates are not automatically advanced, and a flag prevents another pull only when the query excludes flagged records. |
A Signal record fails | Check that Source Content is non-empty, any Survey reference exists in CustomerGauge, date values use a supported format and required account-specific fields are present. |
The integration does not run automatically | Confirm activation is saved, the schedule is not Manual, and the selected days and times are correct in UTC. |
If you need help, provide CustomerGauge Support with the integration name, execution ID and relevant error message from Pull History or Flag History.
Edit or remove an integration
Open the integration from the list to edit its settings. Revalidate after changing authentication or the query, and review both pull and flag mappings.
Turn off Activate this integration and save to stop scheduled pulls. Disable the integration before deleting it. Deletion also removes its pull and flag history, so retain any details needed for an ongoing support case first.