D365 and Dataverse – Integration Overview5 min read

In the realm of D365 and Dataverse integration, decisions on inbound and outbound strategies shape the seamless flow of data. This article delves into the integration intricacies and decoding pathways that connect Dataverse with external systems.

From code-driven approaches to low-code solutions and batch processes, our exploration spans Inbound Integrations’ diversity before delving into Dataverse Outbound Integration’s event-driven frameworks, connectors, and batch processes, facilitating data flow across platforms.

Inbound Integrations

When considering the incorporation of data into Dataverse, various approaches merit evaluation. One approach involves writing code to directly interact with the Dataverse API. In this scenario, two options are available:

  1. Organization Service: This service defines all operations supported by the platform as messages and is accessible from .NET code through the provided SDK.
  2. Web API: This option can be employed across a diverse range of programming languages, platforms, and devices. It encompasses the same operations as the SDK for .NET but is presented in a RESTful style.

Alternatively, integrations can be implemented by utilizing components in Power Platform and Azure that depend on connectors to engage with Dataverse. This approach facilitates a low-code/no-code methodology, offering multiple options:

  1. Power Automate: A Software as a Service (SaaS) solution, it operates on a low-code/no-code basis, utilizing prebuilt or custom connectors.
  2. Logic Apps: Positioned as a Platform as a Service (PaaS) solution, it supports both low-code/no-code and professional development, employing prebuilt or custom connectors.
  3. Data Factory: A managed cloud service designed for complex Extract, Transform, Load (ETL), and data integration projects.

Incorporating external data into PowerApps or Dynamics 365 business applications does not necessitate the physical importation of data. It is viable to embed real-time data from external sources in your user interface. This can be achieved through:

  1. Virtual Tables: Integrating data from external systems, represented as Dataverse tables.
  2. Custom Controls/Pages: Adding full pages, dialogs, or panes in a model-driven app with the flexibility of the canvas designer.
  3. Reports: Embedding Power BI reports in model-driven apps.

Define your Approach

Choosing the right approach among the available options often depends on various factors. For instance, extending an existing application may come with predefined technology requirements, such as a specific programming language. Additionally, organizational investments in a middleware architecture can influence the choice of components and related product licenses for a project.

Let’s explore how to determine the approach when initiating a new project.

Do you need to write a code?

If your goal is to manage the orchestration of events from an external system, consider evaluating the availability of existing connectors and implementing a flow if suitable.

If custom code is deemed necessary, the next question is: Can you implement your coding with .NET?

If yes, you can leverage the provided SDK assemblies distributed as NuGet packages. These assemblies offer various benefits, including helper methods for establishing a Dataverse connection and performing authentication steps.

Specialized classes and methods like entity, entity collection, retrieve multiple, etc., are also provided to implement your business logic with Dataverse operations.

If you are not using .NET, Dataverse exposes the same operations with OData. In this case, you would need to implement Dataverse calls as HTTP methods, and we recommend using the Microsoft Authentication Library to simplify the authentication process.

No Need for Custom Code?

If you determine that custom code is unnecessary and you can rely on existing Dataverse connectors, consider a few additional considerations.

Firstly, ask yourself if your design involves a broader data strategy to move a high volume of data regularly. If so, consider implementing a Data Factory pipeline.

For handling the orchestration of events between applications, a flow might be the right option. In this case, consider factors such as license and cost management, the ALM strategy you wish to implement, the design tools, and the related skills required by your team.

Based on these considerations, you can decide whether Power Automate or Logic Apps are the best fit.

Dataverse Outbound Integration

Dataverse Outbound Data Integration involves making Dataverse data available to other systems. There are two primary types of integration to consider:

1. Event-Driven Integration via Dataverse Event Framework:

  • Plug-ins: Integrate with external web services and Azure Services.
  • Webhooks: Utilize the HTTP pattern, posting execution context to a web service.
  • Business Events: Ideal for internal or external events to notify publishers.

2. Event-Driven & Scheduled Integration with Dataverse Connectors:

  • Power Automate: A Software as a Service (SaaS) automation tool designed for low-code/no-code integration with third-party apps. It offers a library of over 1000 prebuilt connectors and supports custom connectors for both cloud and on-premises connectivity.
  • Logic Apps: Positioned as an Integration Platform as a Service (iPaaS), Logic Apps provide automation for advanced integration, automating complex business processes. They boast tight integration with Azure and benefit from the same connectors ecosystem as Power Automate.

3. Batch Integration:

  • Azure Synapse Link for Dataverse: This solution allows the continuous export of Dataverse data, catering to reporting and analytics use cases.
  • Change Tracking: Dataverse provides a set of delta changes for a table, enabling efficient tracking of modifications over time.

These outbound integration options offer a diverse range of choices, allowing organizations to tailor their approach based on specific needs, scalability requirements, and the nature of the data being shared.