CRED × Microsoft Dynamics 365 — sync, enrichment, troubleshooting

Last updated: June 9, 2026

Audience: CRED customers using Microsoft Dynamics 365 Sales as their CRM.

Purpose: Cover the day-one operational questions for Dynamics — sync cadence, manual triggers, enrichment vs sync, troubleshooting fields that fail to pass over, and where to find action logs.

Read this first: CRED × CRM — How the integration works in the CRED UI. That article covers the cross-CRM concepts. This one covers Dynamics-specific behaviour.


Quick answers

Question

Short answer

Section

How often does CRED sync with Dynamics?

Continuous incremental sync via OData filtered on modifiedon. Dynamics changes typically appear in CRED within minutes; per-user limit is 60 requests/minute and 10,000 / 5 minutes, so we self-throttle.

2

How do I trigger a manual sync (Dynamics → CRED, CRED → Dynamics)?

Per-record buttons, list bulk actions, or a full re-sync from Settings.

3

Why doesn't "Sync with Dynamics" enrich at the same time?

Sync moves data; enrichment uses credits. Use auto-enrich on create or a workflow with Enrich → Sync to Dynamics.

4

Mapped fields not passing over — how to troubleshoot?

Walk the seven-reason checklist. Dynamics-specific gotchas: privilege model, business rules, picklist option-set values, multi-currency.

5

Where are the action logs?

Record Activity tab, Sync Log, Workflow Run Log, Audit Log — each row shows the Dynamics error code and the OData entity ID.

6


1. What CRED syncs from Dynamics 365

CRED supports 13 entity types on Dynamics 365 Sales. Most read-only entities are coming online incrementally as we expand bidirectional support.

Dynamics entity

CRED entity

Direction

systemuser

RemoteUser

Read-only

account

Account

Two-way

contact

Contact

Two-way

opportunity

Opportunity

Two-way

workflow (synthetic)

OpportunityPipeline

Read-only

OpportunitySalesStage + processstage

OpportunityStage

Read-only

campaign

Campaign

Read-only

campaignresponse

CampaignMember

Read-only

task

Task

Read-only

annotation

Note

Read-only

lead

Lead

Read-only

email

Email

Read-only

EntityDefinition

CustomEntity (metadata)

Read-only

Bidirectional today: Account, Contact, Opportunity. Other entities are read-only into CRED for now — if you need write-back on Tasks, Leads, or Notes, please file a request with your CSM.

Sandbox vs Production: Both are supported. Datacenter region (NA, EU, UK, Asia, etc.) is auto-detected from your Dynamics environment URL.

Pipelines: Dynamics models pipelines as Business Process Flows (BPFs). CRED reads them via the workflow entity plus a synthetic salesstage pipeline derived from the picklist values on opportunity. So even orgs without BPFs see a usable pipeline in CRED.


2. When and how often CRED syncs with Dynamics

Initial sync

Triggered immediately after OAuth completes. CRED runs DATA_SYNC_READ for each entity type in tier order. Tier 0 entities (Users, Accounts, Contacts, custom entity metadata) start immediately with a 4-minute stagger. Subsequent tiers are dispatched automatically as each Phase-2 ingestion completes.

For large orgs (1M+ accounts) the initial sync can run for several hours. Progress is in Settings → Integrations → Microsoft Dynamics → Sync log.

Ongoing incremental sync

  • OData queries filter by modifiedon ge the last sync timestamp.

  • A new pass is queued shortly after the previous one finishes — new and modified records typically arrive in CRED within a few minutes.

  • Deletions in Dynamics surface via OData change-tracking when enabled. If you need deletions tracked, ask your Dynamics admin to enable change tracking on the relevant entities (Setup → Customizations).

  • If a read task hangs > 15 min it auto-restarts. Failed Phase-2 records retry after 4h.

Rate-limit awareness — Dynamics is the strictest of the three CRMs

Dynamics 365 enforces per-user service protection limits:

  • 60 requests / minute per user

  • 10,000 requests / 5 minutes per user

  • 52 concurrent requests per user

  • Plus a per-license daily entitlement (10k for Professional, 100k for Enterprise)

Because limits are per user, having a dedicated CRED Integration User in Dynamics avoids contention with day-to-day CRM users. CRED watches the x-ms-ratelimit-burst-remaining-xrm-requests response header and slows down before hitting the ceiling. On a 429 we honour Retry-After and resume.


3. How to trigger a manual sync

Dynamics → CRED (pull)

Scope

How

What happens

One record

Open in CRED → 3-dot menu → Refresh from Dynamics

Single OData GET by {entity}id; updates within seconds

List / collection

List menu → Sync → Pull from Dynamics

Targeted OData reads of every record

Whole org

Settings → Integrations → Microsoft Dynamics → Run full sync

Heavy. Re-reads every entity type

CRED → Dynamics (push)

Scope

How

What happens

One record

Record header → Sync with Dynamics

Creates the Account / Contact / Opportunity in Dynamics if it doesn't exist; updates if it does. Returns the Dynamics URL on success

Bulk

List → select rows → Bulk actions → Sync to Dynamics

Schedules a write per record; uses OData $batch where possible

Workflow

Add a Sync to CRM step

Every record entering the step is written to Dynamics

Currently the supported write targets are Account, Contact, and Opportunity. Other entities are read-only into CRED.


4. Sync vs Enrichment with Dynamics

"Sync with Dynamics" pushes the record's current CRED values to Dynamics. It does not run the CRED enrichment waterfall and does not consume credits. To combine them:

  1. Manual two-step: click Enrich, wait for fields to populate, then click Sync with Dynamics.

  2. Workflow: Workflows → trigger on list / signal / create → EnrichSync to CRM (Dynamics).

  3. Auto-enrich on create: Settings → Integrations → Microsoft Dynamics → Enrichment → toggle Auto-enrich on create.

See the cross-CRM article for the full rationale on why these are kept separate.


5. Mapped fields not passing over — Dynamics-specific troubleshooting

Walk the seven-reason cross-CRM checklist first. Dynamics-specific blockers:

Dynamics error

Meaning

Fix

0x80040216 — Privilege denied

Connected user's security role does not grant write access on the entity or field.

Add the missing privilege to the security role, or pick a different connected user.

0x80040217 — Record not found

The record was deleted in Dynamics or the GUID is invalid.

Resync; if persistent, the local CRED record's externalId is stale — clear and re-link.

0x80040265 — Concurrent request limit

52 in-flight requests for the connected user.

CRED auto-throttles; if it persists, another integration is competing on the same user account — switch CRED to a dedicated user.

0x80060891 — Duplicate detected

A Dynamics duplicate-detection rule fired.

Either widen the duplicate rule, or rely on CRED to update instead of create (which it does when an external ID is already linked).

0x8004010F — Token expired

Access token expired and refresh failed.

Reconnect Dynamics from Settings.

HTTP 429 + Retry-After

Service protection limit hit (60/min, 10k/5min, or daily entitlement).

CRED waits the indicated time and retries. If chronic, upgrade Dynamics license or raise entitlement.

0x80044150 — Required field missing

An entity field marked Business Required is missing on create.

Map that field in CRED, or set a default in Dynamics.

0x80048d18 / business-rule errors

A Dynamics business rule rejected the value.

Audit business rules: Setup → Customizations → [Entity] → Business Rules. Adjust the rule or pre-coerce the value via a workflow.

Picklist value mismatch (silent)

You're pushing a string into an option set field; Dynamics requires the integer option value.

Re-sync the option set metadata (Settings → Integrations → Microsoft Dynamics → Refresh fields). CRED then maps strings ints automatically.

Privilege model — the most common Dynamics blocker

Dynamics security is layered: business unitsecurity rolefield-level security profile. CRED writes as the connected user. If that user's security role lacks Write on the entity, the entire write fails. If the role has Write on the entity but a Field Security Profile blocks a specific field, only that field fails.

Recommended setup:

  1. Create a dedicated "CRED Integration User" (a non-interactive application user is fine; we support both).

  2. Assign a security role with Organization-level Read/Write/Create on Account, Contact, Opportunity, and any custom entities you want to sync.

  3. If you use Field Security Profiles, add the integration user to the relevant profiles for any "secured" fields you want CRED to write.

  4. Connect CRED as that user.

Business rules & plugins

Business rules and Dynamics plugins fire on every write. Failures from plugins typically come back as generic 0x80040224 server errors with the plugin name in the inner exception. The Sync Log surfaces the inner exception — if you see "plugin" in the error, audit Setup → Customizations → Plug-in Assemblies.

Multi-currency

If your Dynamics org has multiple currencies, every Opportunity has a transactioncurrencyid. CRED preserves the source currency and converts to the connection's default currency for display.


6. Action logs

Same four locations as every CRM. Dynamics specifics:

  • Record Activity tab in CRED shows the Dynamics GUID for every sync attempt — copy it into your Dynamics URL (.../main.aspx?etn=account&id={guid}) to jump to the record.

  • Each error log entry includes the Dynamics errorCode (e.g. 0x80040216) and the inner exception message.

  • Dynamics-side, Audit History on each record (must be enabled per entity in customisations) shows who changed what. CRED writes appear as the connected user.

  • If a sync repeatedly hits 0x80040265, your connected user is competing with another app on the same login — switch CRED to a dedicated user.


7. Dynamics integration limits and known constraints

Limit

Value

Note

Service protection — per user / minute

60

CRED self-throttles below this

Service protection — per user / 5 min

10,000

Includes all apps on that user

Concurrent requests / user

52

Why a dedicated integration user is recommended

Daily entitlement — Professional

10,000

Per user, per 24h

Daily entitlement — Enterprise

100,000

Per user, per 24h. Add-on capacity available

OData $batch per call

1,000 changes

Used for bulk writes

OData page size (max)

5,000 records

CRED defaults to 500 for finer-grained progress

Field metadata cache

1 hour

Click Refresh fields after schema changes

Things that look like a sync bug but aren't

  • Write-back is currently limited to Account / Contact / Opportunity. Tasks, Leads, Notes, Emails are read-only into CRED today.

  • Business Process Flows: CRED reads the BPF stage but doesn't advance the BPF when an Opportunity stage changes. Stage advancement still happens in Dynamics.

  • Synthetic salesstage pipeline: Orgs without explicit BPFs see a built-in pipeline derived from the salesstagecode option set. This is a CRED convention, not a Dynamics object — it doesn't appear in Dynamics.

  • Activity entities (task, email, phonecall) are polymorphic in Dynamics. CRED currently maps the regarding link to Account/Contact/Opportunity only.


8. Reference — CRED-side technical detail

  • Library: dynamics-web-api (TypeScript)

  • API version: 9.2 (OData v4)

  • Auth: OAuth 2.0 via Microsoft Entra ID (Azure AD). Tokens refreshed before every call (Microsoft's recommended pattern)

  • Datacenter regions: North America, Europe, UK, Asia, Australia, Japan, India, Canada, GCC, GCC High — auto-detected from the environment URL

Useful Microsoft links