.png)

Dynamics 365 Customer Insights Integration Guide
Integrate unified customer profiles, segments, journeys, and engagement data through Customer Insights REST APIs, Dataverse, events, exports, and Microsoft Entra ID.
Dynamics 365 Customer Insights integration options at a glance
Dynamics 365 Customer Insights provides REST-based integration through Customer Insights - Data APIs and the Dataverse Web API. These interfaces support unified customer profiles, segments, measures, activities, Contacts, Accounts, Leads, and journey-related data. Selected Customer Insights - Journeys and Dataverse scenarios also support event or trigger-based processing, while batch, asynchronous, export, and Azure Data Lake Storage patterns support larger data movements. Dataverse file columns and supported ingestion paths cover selected file scenarios. Martini can authenticate with Microsoft Entra ID OAuth 2.0, orchestrate API calls and polling, transform JSON payloads, apply business rules, and expose reusable APIs for downstream systems.
| Integration point | Supported by Dynamics 365 Customer Insights? | Common use cases | How Martini supports it |
|---|---|---|---|
| REST APIs | Yes | Customer Insights - Data APIs provide access to unified customer profiles, segments, measures, activities, and related operations. The Dataverse Web API supports Customer Insights - Journeys and other Dataverse tables. | Martini can consume the APIs, handle OAuth-authenticated requests, paginate through responses, map JSON, apply business rules, and expose normalized REST APIs. |
| Authentication | Yes | Microsoft Entra ID OAuth 2.0 is the standard authentication model for Dataverse Web API and related Microsoft cloud APIs. Dataverse roles and product permissions control authorization. | Martini can store client credentials or certificates in secure configuration, request tokens for the correct resource, and use protected workflow API calls. |
| Bulk / async / batch APIs | Yes | Dataverse supports $batch operations, while Customer Insights ingestion, refresh, export, and some processing operations may complete asynchronously. | Martini can submit batches or jobs, retain operation identifiers, poll status with controlled scheduling, and route failed operations to retry or exception workflows. |
| Webhooks / outbound callbacks | Limited | Selected Customer Insights - Journeys and Dataverse scenarios provide event or trigger-based processing, but coverage is not universal across Customer Insights objects. | Martini can receive supported webhook-style notifications or event calls, validate payloads, enrich identifiers through APIs, and protect downstream writes against duplicates. |
| File / attachment APIs | Limited | Dataverse supports file columns and related file operations. Customer Insights - Data also supports configured data-source and export workflows, but not a universal attachment API for every object. | Martini can process supported file or export flows and distinguish Dataverse file columns from Customer Insights analytical exports. |
| Database / analytics access | Limited | Customer Insights - Data supports export-oriented analytical patterns such as Azure Data Lake Storage, with related consumption through Microsoft analytical services. Direct access to managed internal databases is not the normal approach. | Martini can orchestrate exports, retrieve or process approved export data, transform it, and load a target analytical platform; it should not assume direct product-database access. |
| SOAP APIs | Legacy | Older Dynamics CRM and Dataverse integrations used SOAP Organization Service endpoints, but SOAP is not recommended for new Customer Insights implementations. | Martini can consume SOAP services when a legacy endpoint is unavoidable, while new workflows should prefer the Dataverse Web API or product-specific REST APIs. |
How Dynamics 365 Customer Insights exposes data and business events
Dynamics 365 Customer Insights REST APIs
Customer Insights - Data exposes REST APIs for unified customer profiles, segments, measures, activities, and related product operations. The Dataverse Web API provides OData v4 access to tables used by Customer Insights - Journeys and related Dynamics 365 applications.
Martini implementation pattern
Martini implementation pattern: Martini authenticates with Microsoft Entra ID, calls the appropriate Customer Insights or Dataverse endpoint, follows pagination links, maps JSON into a canonical model, and invokes downstream APIs or exposes a normalized Martini API.
Implementation sequence
Dataverse batch and asynchronous operations
Dataverse supports $batch requests, while Customer Insights ingestion, refresh, export, and some processing operations can be asynchronous. These operations require workflow logic beyond a single request and response.
Martini implementation pattern
Martini implementation pattern: Martini submits a batch or long-running operation, stores the operation identifier, polls status with bounded scheduling, and routes completed output to transformation and loading steps.
Implementation sequence
Customer Insights events and triggers
Customer Insights - Journeys and Dataverse support selected business-event and trigger-based scenarios, including external event triggers for some real-time journeys. Event coverage and delivery behavior vary by object and configuration.
Martini implementation pattern
Martini implementation pattern: Martini receives a supported notification, validates the event and its source, retrieves complete data when the payload is only an identifier, enriches it from other APIs, and applies duplicate protection before side effects.
Implementation sequence
Customer Insights export and data lake flows
Customer Insights - Data supports export-oriented data movement, including configured Azure Data Lake Storage Gen2 scenarios. Export and refresh operations may not complete synchronously.
Martini implementation pattern
Martini implementation pattern: Martini starts or monitors the approved export process, waits for completion, retrieves the exported profiles, measures, segments, or activities, and loads a reporting or warehouse target.
Implementation sequence
Dataverse file and data operations
Dataverse supports file columns and related file operations, while Customer Insights data-source ingestion and exports have their own supported file and storage paths. These mechanisms are not a universal attachment interface.
Martini implementation pattern
Martini implementation pattern: Martini identifies whether the payload is a Dataverse file column, a record attachment, or an analytical export, then routes it through the appropriate API or file-processing workflow.
Implementation sequence
Common Dynamics 365 Customer Insights integration patterns
Pattern 1: Synchronize unified profiles and segments
When to use this pattern
Use this pattern when Customer Insights - Data is the source for unified profiles, calculated measures, or segment memberships that must be reflected in a sales, marketing, or customer-service application.
Integration direction
Example Mapping
| Dynamics 365 Customer Insights Field | Canonical Field | Target Field |
|---|---|---|
| profileId | customer.externalId | ExternalCustomerId |
| profile.email | customer.email | |
| segmentMemberships | customer.audiences | CampaignMemberships |
| measures.lifetimeValue | customer.lifetimeValue | CustomerLifetimeValue |
Martini implementation pattern
A Martini workflow retrieves profiles or segment data through the Customer Insights - Data API or an export, follows pagination, filters records by consent and eligibility, and maps the result to the target audience model. It uses an external customer identifier for idempotent upserts, records a high-water mark, and retries throttled or transient calls without repeating completed side effects.
Martini capabilities used
- workflows
- API consumption
- data mapping
- business rules
- pagination handling
- error handling
Pattern 2: Synchronize sales audiences with Customer Insights
When to use this pattern
Use this pattern when Contacts, Accounts, or Leads from Dataverse or Dynamics 365 Sales must become eligible audiences for Customer Insights - Journeys or Customer Insights - Data.
Integration direction
Example Mapping
| Dynamics 365 Customer Insights Field | Canonical Field | Target Field |
|---|---|---|
| contactid | customer.sourceId | sourceCustomerId |
| emailaddress1 | customer.email | |
| parentcustomerid | customer.accountId | accountId |
| statuscode | customer.lifecycleStatus | status |
Martini implementation pattern
Martini consumes Dataverse records using $select, $filter, and continuation links, validates required fields and consent status, and transforms sales objects into the configured Customer Insights ingestion or audience shape. The workflow applies business-unit and eligibility rules, supports incremental retrieval, and isolates authorization or schema failures from retryable throttling.
Martini capabilities used
- workflows
- REST API consumption
- JSON transformation
- data mapping
- validation
- retry handling
Pattern 3: Orchestrate real-time journey events
When to use this pattern
Use this pattern for supported Customer Insights - Journeys or Dataverse events that need enrichment, routing, or action in another application or messaging endpoint.
Integration direction
Example Mapping
| Dynamics 365 Customer Insights Field | Canonical Field | Target Field |
|---|---|---|
| eventId | event.id | message.eventId |
| contactId | customer.sourceId | message.customerId |
| eventType | event.type | message.type |
| occurredOn | event.occurredAt | message.timestamp |
Martini implementation pattern
Martini receives the supported event, validates its event type and identifier, checks an idempotency store, and retrieves the full Contact, Account, profile, or interaction when the notification is incomplete. It enriches and routes the canonical event to a queue or downstream API, using bounded retries and a failure path for permanent business or authorization errors.
Martini capabilities used
- workflow triggers
- webhook consumption
- API orchestration
- data enrichment
- business rules
- duplicate protection
- messaging
Pattern 4: Export customer insights to an analytical platform
When to use this pattern
Use this pattern when profiles, measures, segments, or activities must be loaded into Microsoft Fabric, Azure Synapse Analytics, Power BI dataflows, or another approved analytical destination.
Integration direction
Example Mapping
| Dynamics 365 Customer Insights Field | Canonical Field | Target Field |
|---|---|---|
| profileId | customerProfileId | customer_profile_id |
| measure.value | metricValue | metric_value |
| segmentId | audienceId | segment_id |
| lastRefresh | sourceRefreshAt | source_refresh_at |
Martini implementation pattern
Martini starts or monitors the configured Customer Insights export, polls asynchronous status, reads the approved export destination, and maps the source structures to warehouse or reporting tables. It stores operation IDs and watermarks, validates schema changes, and retries transient loads while keeping failed batches available for replay.
Martini capabilities used
- scheduled workflows
- asynchronous orchestration
- file and export processing
- data mapping
- schema validation
- monitoring
- error handling
Applications commonly integrated with Dynamics 365 Customer Insights
Dynamics 365 Customer Insights commonly participates in Microsoft data and customer-engagement architectures, and it can also exchange selected customer, audience, sales, and analytical data with other enterprise platforms. Martini can mediate these exchanges when different systems require different APIs, schemas, security models, or processing schedules.
| Application | Scenario | Direction | Martini Pattern |
|---|---|---|---|
| Dynamics 365 Sales | Synchronize Accounts, Contacts, Leads, customer profiles, qualification data, and engagement signals between sales and customer-insight processes. | Dynamics 365 Sales → Martini → Dynamics 365 Customer Insights | Consume Dataverse or Dynamics 365 APIs, normalize sales objects, apply consent and qualification rules, and upsert profiles or audiences. A reverse workflow can return segment membership and engagement data to Sales with stable identifiers and duplicate protection. |
| Dynamics 365 Customer Service | Combine service cases, contacts, service interactions, and customer history with unified profiles and journey targeting. | Dynamics 365 Customer Service → Martini → Dynamics 365 Customer Insights | Retrieve permitted Dataverse tables, map service and customer identifiers to the Customer Insights model, and process incremental changes using timestamps or supported change tracking. Route authorization, validation, and throttling failures to controlled retry paths. |
| Power BI | Analyze unified customer profiles, measures, segments, journey performance, and engagement data. | Dynamics 365 Customer Insights → Martini → Power BI | Coordinate a Customer Insights export or consume an approved export destination, transform profiles and measures into reporting structures, and deliver the result through the configured analytical ingestion path. Track asynchronous export status before loading downstream data. |
| Microsoft Fabric | Consolidate Customer Insights exports with lakehouse and enterprise analytical data. | Dynamics 365 Customer Insights → Martini → Microsoft Fabric | Monitor export completion, retrieve data from the configured export destination, map it to Fabric ingestion structures, and preserve source identifiers and refresh timestamps for repeatable loads. |
| Azure Synapse Analytics | Support enterprise reporting, customer analytics, segmentation, and data-science pipelines. | Dynamics 365 Customer Insights → Martini → Azure Synapse Analytics | Orchestrate Customer Insights or Dataverse export jobs, poll asynchronous operations, transform profiles, activities, and measures, and load curated datasets while recording operation IDs and high-water marks. |
| Salesforce | Synchronize customer profiles, contacts, leads, sales activity, or audiences across Microsoft and Salesforce estates. | Dynamics 365 Customer Insights → Martini → Salesforce | Expose a normalized Martini API or schedule API-based synchronization, map Dataverse and Customer Insights identifiers to Salesforce fields, and use source IDs or external keys for idempotent upserts. Treat consent and segment exit semantics as explicit business rules. |
| SAP S/4HANA | Enrich customer profiles with ERP customer, order, billing, or product information. | SAP S/4HANA → Martini → Dynamics 365 Customer Insights | Consume SAP APIs or approved files, validate customer and transaction data, transform it into the Customer Insights ingestion model, and coordinate refresh or export status. Separate transient transport failures from permanent validation errors. |
| Adobe Marketo Engage | Coordinate marketing audiences, campaign participation, lead data, and engagement events across marketing platforms. | Dynamics 365 Customer Insights → Martini → Adobe Marketo Engage | Retrieve or receive audience and engagement data through the available platform APIs, map consent and campaign identifiers, apply eligibility rules, and synchronize only the required changes with retry and duplicate-event controls. |
How to build a Dynamics 365 Customer Insights integration in Martini
Objective
Establish access to the relevant Customer Insights - Data API, Dataverse environment, export destination, or event endpoint without embedding environment-specific credentials or URLs in workflow logic.
Instructions in Martini
- Configure the Dataverse environment URL and product API endpoints as environment values
- Use Microsoft Entra ID OAuth 2.0 with the required application or delegated permissions
- Store client secrets, certificates, and related credentials in secure configuration
- Confirm Dataverse application-user, table, business-unit, and Customer Insights permissions
Objective
Select the mechanism that matches the data owner and latency requirement, recognizing that event coverage is selective and that exports or polling may be more appropriate for some Customer Insights objects.
Instructions in Martini
- Use a REST API call for profiles, segments, measures, activities, or Dataverse tables
- Use a supported event or trigger for selected journey and Dataverse scenarios
- Use a scheduler for incremental synchronization, export monitoring, or status polling
- Use an approved export or file path for large analytical data movement
Objective
Retrieve complete and correctly scoped source data while respecting pagination, continuation links, asynchronous jobs, and endpoint-specific query behavior.
Instructions in Martini
- Use $select, $filter, $expand, and $orderby where appropriate for Dataverse queries
- Follow returned continuation URLs rather than assuming page sizes
- Persist operation identifiers for asynchronous refresh, export, and batch processes
- Capture source IDs, timestamps, correlation IDs, and watermarks needed for replay
Objective
Coordinate calls, enrichment, conditional routing, and asynchronous processing in a maintainable Martini workflow rather than embedding all behavior in a one-off script.
Instructions in Martini
- Separate authentication, retrieval, transformation, target writes, and exception handling into clear workflow stages
- Retrieve related Accounts, Contacts, Leads, profiles, or interactions only when required
- Route transient failures to bounded retry logic and permanent failures to an exception path
- Use reusable Martini services or APIs for common customer and audience operations
Objective
Convert Customer Insights and Dataverse payloads into canonical and target-specific structures while preserving identifiers, consent information, and source semantics.
Instructions in Martini
- Map unified profiles, segments, measures, activities, and journey data to the target model
- Normalize timestamps, choice values, lookup references, and external identifiers
- Preserve consent, suppression, opt-out, source, and effective-time fields
- Validate required fields and reject malformed or incomplete payloads before writes
Objective
Apply business and privacy rules before creating audiences, triggering journeys, or updating customer-facing systems.
Instructions in Martini
- Check consent, suppression, retention, and regional eligibility requirements
- Use stable source IDs, alternate keys, event IDs, or operation IDs for idempotency
- Define segment entry, exit, deletion, and late-arriving-data behavior explicitly
- Prevent profile existence alone from being treated as permission to market
Common Dynamics 365 Customer Insights data objects used in integrations
| Object | Typical Use | Common target systems | Martini handling |
|---|---|---|---|
| Unified customer profiles | Represent customers after source integration and identity-resolution rules in Customer Insights - Data. | Dynamics 365 Sales, Dynamics 365 Customer Service, Salesforce, Power BI, Microsoft Fabric | Martini retrieves profiles through supported APIs or export paths, maps source identifiers and consent fields, and applies idempotent upsert or analytical-load logic. |
| Segments | Define groups of unified customers for analysis, audience selection, and journey targeting. | Dynamics 365 Customer Insights - Journeys, Dynamics 365 Sales, Adobe Marketo Engage, Power BI | Martini synchronizes segment definitions or memberships where supported, maps entry and exit semantics, and prevents duplicate audience updates. |
| Measures | Provide calculated customer-level metrics such as lifetime value, purchase frequency, or engagement indicators. | Power BI, Microsoft Fabric, Azure Synapse Analytics, Dynamics 365 Sales | Martini retrieves or processes measures, converts data types and metric names, and loads curated analytical or operational representations. |
| Activities | Represent customer interactions or source events used in profile unification, analytics, and segmentation. | Dynamics 365 Customer Insights - Data, Power BI, Microsoft Fabric, Azure Synapse Analytics | Martini consumes activities through APIs or exports, normalizes timestamps and identifiers, and uses high-water marks or event IDs for incremental processing. |
| Customer journeys | Orchestrate audience-based or trigger-based customer communication and engagement flows in Customer Insights - Journeys. | Dynamics 365 Sales, Dynamics 365 Customer Service, downstream notification and marketing platforms | Martini can exchange supported journey-related data through Dataverse APIs or event mechanisms, applying consent, eligibility, and retry rules. |
| Contacts and Accounts | Store customer and organization information in Dataverse and provide audiences or recipients for journey scenarios. | Dynamics 365 Sales, Dynamics 365 Customer Service, Salesforce, SAP S/4HANA | Martini reads and upserts Dataverse objects through the Web API, follows continuation links, uses alternate or external keys, and respects table permissions. |
Authentication and security considerations
Microsoft Entra ID authentication
Use Microsoft Entra ID OAuth 2.0 for Dataverse Web API and related Customer Insights API access. Server-to-server integrations commonly use application authentication with a client secret or certificate where supported.
Authorization is separate from authentication
The application or user must have access to the Dataverse environment, an appropriate Dataverse identity, security roles, table privileges, and any required Customer Insights product permissions.
Protect credentials and customer data
- Store client secrets, certificates, tokens, and environment URLs in secure configuration.
- Do not log access tokens, secrets, or unnecessary personal data.
- Preserve consent, suppression, retention, and regional privacy indicators during synchronization.
- Use least-privilege access for tables, columns, exports, and operations.
Operational considerations for Dynamics 365 Customer Insights integrations
API limits and pagination
Dataverse service-protection limits and endpoint-specific limits can produce throttling responses. Follow continuation links, honor Retry-After when supplied, use bounded concurrency, and apply exponential backoff for HTTP 429 and transient 5xx responses.
Incremental and idempotent processing
Use change tracking where supported, modified timestamps, export status, event IDs, or persisted high-water marks. Stable Dataverse row IDs, alternate keys, external customer IDs, and operation IDs help prevent duplicate Contacts, Accounts, Leads, audience updates, and notifications.
Asynchronous operations and schema changes
Customer Insights refreshes, exports, ingestion, and bulk operations may be asynchronous. Persist job identifiers and poll with controlled scheduling. Validate mappings against environment-specific tables, columns, relationships, choice values, solution changes, and API versions.
Event coverage and observability
Do not assume every object produces an event. Confirm delivery and retry semantics for each scenario, and record correlation IDs, request identifiers, operation IDs, endpoint names, and source IDs without exposing sensitive customer data.
Why use Martini instead of scripts or point-to-point integrations?
Coordinate more than one API call
Customer Insights integrations often combine Customer Insights - Data APIs, Dataverse Web API calls, journey events, exports, and downstream applications. Martini provides workflows for orchestration, enrichment, conditional routing, polling, and controlled retries.
Separate business rules from transport logic
Reusable workflows can centralize consent checks, audience eligibility, identifier matching, incremental synchronization, validation, and duplicate protection instead of scattering these rules across point-to-point scripts.
Build maintainable integration assets
Martini can map and transform JSON payloads, consume external REST APIs, receive supported webhooks, expose normalized APIs, and use secure environment configuration. This creates reusable integration behavior that can be monitored, tested, and deployed as enterprise assets.
Frequently asked questions
Use Customer Insights - Data REST APIs for unified customer profiles, segments, measures, and activities; use the Dataverse Web API for Dataverse tables used by Customer Insights - Journeys and related Dynamics 365 applications; and use supported event, batch, asynchronous, file, and export mechanisms where appropriate. Microsoft Entra ID OAuth 2.0 provides authentication, while workflows can manage mapping, synchronization, polling, and error handling.
Yes. Martini can consume the Customer Insights - Data REST APIs and Dataverse Web API, call Microsoft endpoints with Microsoft Entra ID OAuth 2.0, receive supported event or trigger notifications, orchestrate asynchronous exports, and expose APIs for downstream applications. No native Martini connector is documented in the supplied materials.
No. A dedicated Dynamics 365 Customer Insights connector is not required. Martini can use the product's native Customer Insights and Dataverse REST APIs, supported event mechanisms, export paths, file operations, and Microsoft Entra ID authentication.
Lonti does not charge an additional per-connector or per-vendor fee to integrate Dynamics 365 Customer Insights. The integration is subject to the provisioned capacity of the Martini environment. Separate Microsoft, Azure, infrastructure, storage, or other third-party costs may apply according to licensing, usage, and deployment choices.
Use Customer Insights - Data APIs for unified profiles, segments, measures, activities, and product-specific operations. Use the Dataverse Web API for Dataverse tables, including many Customer Insights - Journeys and Dynamics 365 records. Use batch, asynchronous, export, or file mechanisms for larger movements, and use legacy SOAP only when an existing dependency cannot be replaced.
No. Customer Insights - Journeys and Dataverse support selected business events and trigger-based scenarios, but coverage depends on the product area, object, operation, and configuration. Confirm the payload, delivery model, retry behavior, and whether the event contains a full record or only an identifier before designing a workflow.
Martini can use scheduled or event-driven workflows to retrieve or receive profiles, segments, measures, activities, Contacts, Accounts, Leads, or journey data. It maps source payloads to a canonical and target model, applies consent and business rules, follows pagination or export status, and uses high-water marks, alternate keys, or external IDs for incremental and idempotent processing.
Martini workflows can separate authentication, authorization, validation, throttling, transient service failures, and permanent schema or business-rule errors. Implementations can honor Retry-After, use exponential backoff and bounded concurrency, persist event or operation IDs, and replay failed work without repeating completed side effects. Dataverse continuation links and asynchronous job status should be handled explicitly.
Related Martini documentation
Workflows
Integrate Dynamics 365 Customer Insights with Martini
Use Martini to connect Customer Insights - Data, Dataverse, Customer Insights - Journeys, and downstream enterprise systems through secure APIs, event-driven workflows, exports, and reusable data transformations.