Skip to main content
Microsoft 365 / Outlook Two-Way Sync — Bi-directional Odoo ↔ Microsoft 365 sync for contacts, calendar, email, tasks and OneD — 1/1Illustrative preview

Bi-directional Odoo ↔ Microsoft 365 sync for contacts, calendar, email, tasks and OneDrive

— built, installed and supported by ECOSIRE.

What is Microsoft 365 / Outlook Two-Way Sync?

Bi-directional Odoo ↔ Microsoft 365 sync for contacts, calendar, email, tasks and OneDrive — built, installed and supported by ECOSIRE. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.

Key Features

Bi-directional contacts sync between Odoo res.partner and Outlook / Microsoft 365 address book, with folder and category mapping
Two-way calendar sync (calendar.event ↔ Outlook) covering attendees, reminders, recurring events and free/busy status
Per-user OAuth 2.0 via Microsoft Graph so each employee's contacts, calendar and email sync under their own Microsoft 365 identity
Outlook email logging: inbound and outbound messages auto-linked to the matching Odoo lead, opportunity, sale order or partner and threaded into chatter
Tasks / to-do synchronization between Odoo activities or project.task and Microsoft To Do / Planner
OneDrive & SharePoint file linking (or optional mirroring) to any Odoo record via ir.attachment / documents.document
Configurable ir.cron scheduled actions — set independent sync frequencies per object type (e.g. calendar every 5 min, files hourly)
Idempotent, duplicate-safe sync using stored external-ID and Graph deltaLink / change-token fields on each Odoo record
Configurable conflict resolution strategy: Odoo-wins, Microsoft-wins, or last-modified-wins, set per object type
Data-driven field mapping editable from an Odoo settings view — remap fields without changing Python code
Selective sync scoping: choose which contact folders, calendars, and Odoo tags/companies participate in the sync
Full sync audit log with per-record status, timestamps and error detail for troubleshooting and compliance
Access controlled through ir.model.access.csv and record rules so users only sync and see their own Microsoft data
Manual 'Sync now' action plus automated cron, with retry/back-off handling for Graph API throttling (HTTP 429)
Optional webhook / change-notification support for near-real-time calendar and mail updates instead of polling
Compatible with Odoo 17, 18 and 19 on both Community and Enterprise editions

Built to order, done for you

No DIY setup — a working app, built, installed and supported by ECOSIRE.

  1. 1

    You order

    Start with a one-time build price. We scope it with you at kickoff.

  2. 2

    We build & install

    ECOSIRE builds, configures and installs it on your Odoo.

  3. 3

    Go live + support

    You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.

Technical Specifications

Odoo Compatibility
Odoo 17, Odoo 18, Odoo 19
Editions
Enterprise & Community
License
Licence confirmation required
Python Requirement
Python 3.10+
Database
PostgreSQL 12+

About this Product

If your organization lives in Outlook, Teams and OneDrive but runs operations in Odoo, your team wastes hours re-keying the same contacts, double-booking calendars, and hunting for the "real" version of a proposal file. This build-to-order module closes that gap with a robust, bi-directional bridge between Odoo (17, 18 or 19 — Community or Enterprise) and Microsoft 365 via the Microsoft Graph API.

ECOSIRE designs, builds, installs and supports the module for you — this is not an off-the-shelf apps.odoo.com download. After purchase we run a short scoping call, register (or help you register) an Azure AD / Entra ID application for OAuth 2.0, then engineer the connector around your exact record types, ownership rules and sync direction preferences. Typical delivery is one working week from confirmed scope and access.

Under the hood the module is proper Odoo engineering, not a fragile script. Sync jobs run as Odoo scheduled actions (ir.cron) on schedules you control, each Microsoft object is mapped to Odoo models (res.partner, calendar.event, mail.message, project.task, ir.attachment / documents.document) with stored external-ID and change-token fields so re-syncs are idempotent and never duplicate. Conflict resolution is configurable (Odoo-wins, Microsoft-wins, or last-modified-wins) and every sync is logged for auditability. Field mappings are data-driven so your admins can adjust them from a settings view without touching Python.

Contacts sync both ways between res.partner and the user's Outlook / Microsoft 365 address book, with folder and category mapping. Calendar sync keeps calendar.event and Outlook calendars aligned in both directions — including attendees, reminders, recurrence and free/busy — with per-user OAuth so each employee's events sync under their own identity. Inbound and outbound Outlook emails are logged against the matching Odoo record (lead, opportunity, sale order, partner) using the Graph message API and threaded into the Odoo chatter, so the full conversation history lives where your team works. Tasks / to-dos sync between Odoo activities or project.task and Microsoft To Do / Planner. And OneDrive / SharePoint files are linked (or optionally mirrored) to Odoo records so a document stored once in Microsoft 365 is one click away from the deal, project or customer it belongs to.

Security is handled the Odoo way: access controlled through ir.model.access.csv and record rules so users only sync and see their own data, secrets stored server-side, and OAuth refresh tokens managed so day-to-day sync never interrupts your users. Delivery includes the full module source, deployment, configuration, admin documentation and a post-go-live support window. You own the code.

What you get

  • Complete, documented Odoo module source (__manifest__.py, models, views, security, ir.cron definitions) that you own outright
  • Azure AD / Microsoft Entra ID application registration and OAuth 2.0 / Microsoft Graph configuration guidance and setup
  • Installation and deployment on your Odoo 17/18/19 environment (staging plus production) with the sync jobs configured
  • Field-mapping and conflict-resolution configuration tailored to your record types, ownership rules and sync direction
  • Administrator documentation covering connection setup, cron schedules, mapping, audit log and troubleshooting
  • Admin / key-user training session on connecting user accounts, monitoring syncs and adjusting mappings
  • Post-go-live support window for bug fixes and adjustments, with an SLA agreed during scoping
  • Source code repository access plus a versioned handover so you can maintain, extend or re-deploy the module independently

Who this is for

Microsoft-first operations manager

Runs a team that lives in Outlook, Teams and OneDrive but manages sales, projects and customers in Odoo. Wants one source of truth so contacts, meetings and files stop being re-keyed and double-entered across two systems.

Sales / CRM leader

Needs every Outlook email and meeting with a prospect automatically logged against the Odoo lead or opportunity, so pipeline history is complete without reps copying and pasting — and reporting reflects real activity.

IT / Odoo administrator

Owns the Azure AD tenant and the Odoo instance. Wants a secure, per-user OAuth integration with proper access rules, controllable cron schedules, an audit trail and clean code they can maintain — not a brittle unsupported script.

How Microsoft 365 / Outlook Two-Way Sync Compares

CriterionECOSIRECustom BuildCompetitorOdoo Native
Two-way sync of contacts, calendar, email, tasks AND OneDrive filesAll five object types, bi-directional, in one moduleOnly if you scope and pay to build each oneUsually one or two objects (e.g. calendar only)Not included
Built, installed and supported for your exact record types and rulesYes — scoped to your models, ownership and directionYes, but you manage the developer and riskNo — generic mapping you adapt toNot included
Outlook email auto-logged against Odoo leads/orders in chatterYes, via Microsoft Graph message APIPossible but must be built from scratchRarely; often manual or add-on onlyPartial support
Idempotent, duplicate-safe sync with change tokens & audit logYes — external-ID + deltaLink, full audit trailDepends on developer disciplineVaries; duplicates are a common complaintNot included
Configurable conflict resolution (Odoo/Microsoft/last-modified wins)Yes, per object typeOnly if explicitly builtOften fixed or not exposedNot included
Per-user OAuth 2.0 with proper ir.model.access.csv + record rulesYes — per-user identity and least-privilege accessMust be designed and secured yourselfSometimes; often a single service accountPartial support
Runs on Odoo 17, 18 and 19, Community and EnterpriseYes, built and tested for your versionWhatever you commission and maintainDepends on vendor version supportPartial support
Source code ownership and freedom to extendFull source handed over — you own itYesUsually licensed/obfuscated, no sourcen/a
Total cost of ownershipFixed build price + optional support retainerOpen-ended developer time and riskLow upfront but limited and per-user fees add upFree but does not exist

Frequently Asked Questions about Microsoft 365 / Outlook Two-Way Sync

How long does delivery take, and is this an instant download?

This is a build-to-order module, not an instant apps.odoo.com download. After purchase we run a short scoping call, then design, build, install and configure the connector for your environment. Typical delivery is one working week depending on scope — how many object types you sync (contacts, calendar, email, tasks, files), your conflict rules, and whether you need webhook near-real-time updates or scheduled polling. You'll get a firm timeline confirmed during scoping.

What do support and updates include after go-live?

Delivery includes a post-go-live support window (SLA agreed during scoping) covering bug fixes and adjustments. Because you receive and own the full source, your team can maintain and extend it freely. We also offer ongoing support and update retainers to keep the connector current with Microsoft Graph API changes and new Odoo releases (17 → 18 → 19). Microsoft occasionally deprecates Graph endpoints, so an active retainer is the safest way to stay running long-term.

Which Odoo versions and editions are supported?

Odoo 17, 18 and 19, on both Community and Enterprise editions. The module is built with standard Odoo primitives — models.Model, ir.cron scheduled actions, ir.model.access.csv, record rules and standard views — so it installs cleanly on your edition. Enterprise-only features (like the Documents app for OneDrive mirroring) are used only if you run Enterprise; on Community we fall back to ir.attachment linking.

How does authentication work — do we need an Azure AD app?

Yes. The connector uses OAuth 2.0 through the Microsoft Graph API, which requires an application registered in your Azure AD / Microsoft Entra ID tenant. We guide (or perform) that registration, request the minimum Graph scopes needed for the objects you sync, and set up per-user consent so each employee's contacts, calendar and mail sync under their own identity. Secrets and refresh tokens are stored server-side, and tokens are refreshed automatically so sync doesn't interrupt users.

How are duplicates and conflicts prevented in a two-way sync?

Every synced Odoo record stores the Microsoft external ID and a Graph change-token / deltaLink, so re-runs are idempotent and never create duplicates. When the same record changes on both sides between syncs, a configurable conflict-resolution strategy decides the winner — Odoo-wins, Microsoft-wins, or last-modified-wins — set per object type. Every sync writes to an audit log with per-record status and error detail so you can see exactly what happened.

Can we control what syncs and how often?

Absolutely. Sync runs as Odoo scheduled actions (ir.cron) you control, with independent frequencies per object type — for example calendar every few minutes and files hourly. You can scope which contact folders, calendars and Odoo tags/companies participate, choose sync direction per object, and trigger a manual 'Sync now' at any time. Optional webhook change-notifications enable near-real-time calendar and mail updates instead of polling.

What happens to our data if we later stop using ECOSIRE?

You own the module source and it runs entirely inside your own Odoo instance and your own Microsoft 365 tenant — there is no ECOSIRE-hosted middleman holding your data. If you part ways, the connector keeps running on your infrastructure. The only maintenance concern is future Odoo upgrades and Microsoft Graph API deprecations, which any competent Odoo developer (or an ECOSIRE retainer) can handle.

Request a quote

Microsoft 365 / Outlook Two-Way Sync

Bi-directional Odoo ↔ Microsoft 365 sync for contacts, calendar, email, tasks and OneDrive — built, installed and supported by ECOSIRE.

  • Bi-directional contacts sync between Odoo res.partner and Outlook / Microsoft 365 address book, with folder and category mapping
  • Two-way calendar sync (calendar.event ↔ Outlook) covering attendees, reminders, recurring events and free/busy status
  • Per-user OAuth 2.0 via Microsoft Graph so each employee's contacts, calendar and email sync under their own Microsoft 365 identity
  • Outlook email logging: inbound and outbound messages auto-linked to the matching Odoo lead, opportunity, sale order or partner and threaded into chatter

Request a Quotation

Tell us about your Microsoft 365 / Outlook Two-Way Sync requirements and we'll send pricing, licensing options and a tailored proposal — usually within one business day.

No payment now. This sends a quote request to our team — we'll follow up by email with pricing and next steps.