Table of Content

Overview

Data migration from Microsoft Dynamics 365 CRM to Odoo is a common requirement when organizations adopt Odoo for ERP or customer management needs. This article explains two practical approaches for migrating data—using a paid connector and a free/custom solution—both implemented with SQL Server Integration Services (SSIS).

The focus of this migration is on Contact data, but the same approach can be extended to other entities.

1. Data Import Using SSIS

SSIS is a powerful Microsoft ETL (Extract, Transform, Load) tool that enables data movement, transformation, validation, and error handling. In this implementation:

  • Source System: Dynamics 365 CRM
  • Destination System: Odoo
  • Initial Dataset: Contacts

Two different methods were used to achieve the migration.

Method 1: Using the CData Odoo Connector (Paid Connector)

Description

This approach uses the CData Odoo Connector with SSIS to enable bulk data import from Dynamics 365 CRM to Odoo.

  • Dynamics 365 CRM is configured as the source.
  • Odoo is configured as the destination.
  • The CData connector provides built-in connectivity between SSIS and Odoo.

Key Features

  • Minimal custom coding
  • Easy field mapping through SSIS
  • Built-in data transformation and validation
  • Reliable error handling
  • Faster implementation

Implementation Notes

The migration was tested using the CData Odoo Connector. Using SSIS, contact records were successfully extracted from CRM, transformed as required, and loaded into Odoo.

This method is ideal for production environments where stability, support, and reduced development effort are priorities.

Using the CData Odoo Connector (Paid Connector)
visual representation of Using the CData Odoo Connector (Paid Connector)

Important Note

The CData Odoo Connector is a licensed component. After the trial period expires, a paid subscription is required to continue using this connector.

Method 2: Using SSIS Script Component (Free / Custom Solution)

Description

As an alternative to paid connectors, a custom SSIS Script Component was implemented for proof-of-concept purposes.

This method uses:

  • SSIS built-in components
  • Custom C# scripting
  • Direct Odoo API integration

C# Scripting:

using System;

using System.Net.Http;

using System.Text;

using System.Windows.Forms;

using Microsoft.SqlServer.Dts.Pipeline.Wrapper;

using Microsoft.SqlServer.Dts.Runtime.Wrapper;

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]

public class ScriptMain : UserComponent

{

    private static readonly HttpClient client = new HttpClient();

    private string odooUrl = “{baseurl}/jsonrpc”;

    public override void Input0_ProcessInputRow(Input0Buffer Row)

    {

        // Construct the JSON payload

        // Using string interpolation for simplicity

        string jsonPayload = @”

        {

            “”jsonrpc””: “”2.0″”,

            “”method””: “”call””,

            “”params””: {

                “”service””: “”object””,

                “”method””: “”execute_kw””,

                “”args””: [

                    “”{database}””,

                    2,

                    “”{APIKEY}””,

                    “”res.partner””,

                    “”create””,

                    [

                        {

                            “”name””: “”” + Row.fullname + @”””,

                            “”email””: “”” + Row.emailaddress1 + @”””,

                            “”phone””: “”” + Row.mobilephone + @”””

                        }

                    ]

                ]

            },

            “”id””: 1

        }”;

        try

        {

            var content = new StringContent(jsonPayload, Encoding.UTF8, “application/json”);

            var response = client.PostAsync(odooUrl, content).Result;

            if (!response.IsSuccessStatusCode)

            {

                // Log error if needed

                bool cancel = false;

                ComponentMetaData.FireError(0, “Odoo API”, “Failed to create record: ” + response.ReasonPhrase, “”, 0, out cancel);

            }

        }

        catch (Exception ex)

        {

            bool cancel = false;

            ComponentMetaData.FireError(0, “Odoo API”, ex.Message, “”, 0, out cancel);

        }

    }

}

Using SSIS Script Component (Free / Custom Solution)
visual representation of  Using SSIS Script Component (Free / Custom Solution)

Note: In the scripting, we need to add a reference to System.Net.Http, as the scripting does not support NuGet package references.

Key Features

  • No third-party licensing cost
  • Full control over data flow logic
  • Custom field mapping
  • Flexible transformation rules
  • Batch processing support
  • Robust error handling

Considerations

While this approach avoids licensing costs, it requires:

  • Manual API integration
  • Custom C# development
  • Ongoing maintenance
  • More development and testing effort

This method is best suited for organizations with strong technical resources or for environments where licensing cost is a concern.

Comparison Summary

AspectCData Connector (Paid)  Script Component (Free)
CostPaid (Trial available)   Free
Setup TimeFast   Longer
Coding RequiredMinimal  High
MaintenanceLow  Medium to High
ScalabilityHigh  High (with effort)
Best ForProduction use  Custom or budget-driven solutions

Conclusion

Both approaches successfully migrated contact data from Dynamics 365 CRM to Odoo using SSIS:

  • The CData Connector provides a fast, reliable, and low-maintenance solution suitable for production environments.
  • The Script Component approach offers a cost-effective alternative with greater flexibility but requires more development effort.

The final choice depends on budget, technical expertise, and long-term maintenance considerations. Book a Free Consultation with Skysoft connections

Read more : dataverse mcp vs custom connectors api call savings

FAQ’s

Can SSIS be used to migrate data from Dynamics 365 CRM to Odoo?

Yes, SSIS can be used with either a paid connector or a custom API-based solution.

Is the CData Odoo Connector mandatory?

No. It simplifies the process but requires a license after the trial period.

Is the free SSIS Script Component suitable for production?

It can be, but it needs strong technical expertise and ongoing maintenance.

Can this approach be used for entities other than Contacts?

Yes, the same method can be extended to leads, accounts, and other CRM entities.

is a software solution company that was established in 2016. Our quality services begin with experience and end with dedication. Our directors have more than 15 years of IT experience to handle various projects successfully. Our dedicated teams are available to help our clients streamline their business processes, enhance their customer support, automate their day-to-day tasks, and provide software solutions tailored to their specific needs. We are experts in Dynamics 365 and Power Platform services, whether you need Dynamics 365 implementation, customization, integration, data migration, training, or ongoing support.

Share This Story, Choose Your Platform!

Dataverse MCP vs Custom ConnectorsDataverse MCP vs Custom Connectors: Which Integration Method Saves More API Calls?