$ 116.42
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Documents (documents) |
| Community Apps Dependencies | Show |
| Lines of code | 19776 |
| Technical Name |
sharepoint_sync |
| License | OPL-1 |
| Website | https://praetorx.net |
| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Discuss (mail)
• Documents (documents) |
| Community Apps Dependencies | Show |
| Lines of code | 19776 |
| Technical Name |
sharepoint_sync |
| License | OPL-1 |
| Website | https://praetorx.net |
SharePoint Sync
Bidirectional Odoo Documents ↔ Microsoft SharePoint & OneDrive Sync for Odoo 19
Sync your Odoo Documents workspaces with Microsoft SharePoint libraries and OneDrive — bidirectional, scheduled or real-time via webhooks, with five conflict policies, per-folder mapping, a full audit trail, and encrypted OAuth2 authentication through Microsoft Graph API.
praetorx.net | Syntax & Sabotage
Sync Engine
Changes in Odoo propagate to SharePoint, changes in SharePoint propagate back. Three sync directions available per workspace: bidirectional, to SharePoint only, or from SharePoint only.
Scheduled sync at configurable intervals (5, 15, 30, 60, 120, or 240 minutes) via cron. Real-time mode uses Microsoft Graph webhook subscriptions for instant push notifications.
Map individual Odoo workspace folders to specific SharePoint subfolders. Auto-Match pre-fills mappings by name. Unmapped folders fall back to the workspace default. Children mirror automatically.
Enter a SharePoint site URL and the module discovers all available document libraries via Graph API. Communication Sites, Team Sites, and OneDrive for Business supported. Recursive subfolder discovery up to 3 levels.
Files moved or renamed in SharePoint are matched by item ID and relocated in Odoo in-place. Preserves document history, tags, comments, and followers — no delete + recreate cycle.
Temporary and system files excluded automatically. Configurable excluded extensions list (.tmp, .ds_store, .bak). Configurable max file size per workspace (default 250 MB). Quiet period skips recently modified files to avoid partial-write conflicts.
Conflict Resolution
Configurable per workspace: Manual Resolution (ask), Newest Version Wins, Odoo Always Wins, SharePoint Always Wins, Keep Both Copies. State machine with validated transitions prevents invalid status changes.
Bulk-resolve conflicts from the document list view. Select a strategy (workspace policy, keep Odoo, keep SharePoint, keep both, keep newest), preview the first conflict, and resolve all selected documents in one action.
Separate policies for each direction. Remote deletion: keep in Odoo, quarantine, archive, or delete. Local deletion: keep in SharePoint or delete from SharePoint. Un-quarantine flow restores quarantined documents back to pending.
OWL-based dashboard with library cards, folder mapping panel, and sync activity feed. Stat buttons for synced / pending / conflict / failed / quarantined counts link to filtered document views.
Security & Authentication
Token-based authentication through Azure AD / Entra ID using MSAL. Client secrets and access tokens encrypted at rest with Fernet (cryptography library). Automatic token refresh — no manual re-authentication. Multi-company support.
HMAC-SHA256 signature validation on incoming webhook notifications. IP whitelist with CIDR support for webhook sources. Rate limiting (100 req/min per auth config). Client state verification per Microsoft Graph spec.
Audit & Observability
Every upload, download, conflict, resolution, quarantine, restore, and error is recorded with timestamp, trigger source (cron, webhook, manual), and user. Daily retention cron keeps storage under control.
Every deletion logged with document name, SharePoint path, user, deletion type (manual, sync, archive, cascade), file size, and restore status. Restored entries older than 180 days cleaned up by daily cron.
Monitor connector status, sync statistics, and queue health via /sharepoint/health. Structured error codes (SP_AUTH_*, SP_TOKEN_*, SP_SYNC_*, SP_API_*) for programmatic error handling.
Exponential backoff with jitter on retries (up to 3 attempts, max 30s delay). Batch cron processing (100 documents per batch). Background queue processing via praetorx_base. Chunked uploads for files over 4 MB.
Technical Reference
| Component | Details |
|---|---|
| sharepoint.auth | OAuth2 config — Azure AD tenant, client ID/secret (encrypted), token lifecycle, webhook secret, IP whitelist, multi-company |
| sharepoint.workspace.config | Workspace mapping — links Odoo workspace to SharePoint site + library, sync direction, interval, conflict policy, deletion policies, quiet period, excluded extensions, max file size |
| sharepoint.library | Discovered libraries — persistent model with drive ID, web URL, library type, auto-discovered from Graph API |
| sharepoint.folder | Hierarchical folder model — parent_store for nested paths, item ID tracking, computed full path |
| sharepoint.folder.mapping | Per-folder routing — maps Odoo workspace folders to SharePoint subfolders, with auto-match |
| sharepoint.sync.log | Audit log — event types: upload, download, conflict detected/resolved, delete, quarantine, restore, error |
| sharepoint.sync.deletion.log | Deletion audit — document name, path, user, type (manual/sync/archive/cascade), restore tracking |
| sharepoint.conflict.resolver | Conflict tracking — type, strategy, status, checksums, linked document, resolution notes |
| documents.document | Extended with sync fields — sp_enabled, sp_sync_status (state machine), sp_item_id, sp_file_path, checksums, modification dates |
| Wizards | Setup Wizard (4-step guided config) and Conflict Resolution Wizard (bulk resolve from document list) |
| Cron Jobs | Auto-sync (every 5 min), webhook renewal (daily), sync log cleanup (daily), deletion log cleanup (180 days) |
Screenshots
Sync Dashboard — workspace overview with status cards, library counts, and quick actions
Connection Configuration — tabbed setup with SharePoint site URL, authentication method, and connection test
OAuth2 Authentication — Azure AD / Entra ID configuration with tenant, client ID, scopes, and webhook security
Sync Configuration — scheduled or real-time sync mode, configurable intervals, and one-click manual sync
Workspace Configuration — workspace selection, sync direction (upload, download, bidirectional), and company assignment
Setup Guide
- Odoo 19.0 Enterprise Edition (required for the
documentsmodule) - Python 3.10+ with
requests,msal, andcryptographypackages - Required Odoo modules:
base,documents,foundation,mail,praetorx_base - A Microsoft 365 subscription with SharePoint Online or OneDrive for Business
- An Azure AD / Entra ID app registration with Microsoft Graph API permissions
Requires Odoo Enterprise. The documents module is an Enterprise-only dependency.
- In the Azure Portal (portal.azure.com), go to Azure Active Directory → App registrations → New registration
- Note your Tenant ID and Client ID
- Under Certificates & Secrets, create a new client secret and copy the value immediately
Add Microsoft Graph application permissions:
- Files.ReadWrite.All
- Sites.ReadWrite.All
- User.Read
Grant admin consent for your organization.
- Install SharePoint Sync from Odoo Apps (dependencies install automatically)
- Navigate to SharePoint Sync → Configuration → SharePoint Auth
- Create a new authentication record with your Tenant ID, Client ID, and Client Secret
- Click Test Connection to verify credentials
- Go to SharePoint Sync → Configuration → SharePoint Workspaces
- Create a new workspace config (or use the 4-step setup wizard)
- Enter a SharePoint site URL and click Discover Libraries
- Select a library, choose an Odoo Documents workspace, and set your sync direction
- Optionally configure per-folder mappings, conflict policy, and deletion policies
- Enable sync — the cron picks up the workspace on the next interval
User: View sync status, audit logs, and deletion logs (read-only).
Manager: Full access — create/edit auth configs, workspace mappings, resolve conflicts, trigger manual sync. Admin user assigned by default.
Multi-company record rules isolate data between companies.
FAQ
documents module, which is only available in Odoo Enterprise Edition. It works on Enterprise and Odoo.sh.requests (HTTP client), msal (Microsoft Authentication Library for OAuth2), and cryptography (Fernet encryption for token storage). Install via pip install requests msal cryptography. On Odoo.sh, add them to your requirements.txt.cryptography library). Tokens are refreshed automatically before expiry. Sensitive fields are marked copy=False to prevent accidental duplication.Release History
v19.0.3.6.1 — March 2026
Current Release
- Move/rename detection — bidirectional sync relocates files in-place via
sp_item_idmatching, preserving document history - Fix: SP→Odoo nested folder duplication bug (workspace folder prefix now stripped correctly)
v19.0.3.6.0 — March 2026
- Security: cross-site folder leakage fix — stale library/folder records deactivated on site URL change
- Security: multi-company record rules for all SharePoint models
v19.0.3.2.0 — March 2026
- OWL Workspace Config Page replacing form view — vertical tab navigation, inline auto-save, visual library and sync direction cards
v19.0.3.0.0 — March 2026
- OWL Dashboard redesign — library cards, folder mapping panel, sync activity feed
v19.0.2.0.0 — March 2026
- Per-folder mapping with Auto-Match, upload path construction, and download path resolution
v19.0.1.3.0 — March 2026
- 5 configurable conflict policies, deletion policies, quiet period
- Sync audit log, conflict resolution wizard, workspace stat buttons
- State machine with validated transitions, bulk server actions
v19.0.1.2.0 — December 2025
- Encrypted token storage, webhook HMAC-SHA256 validation, IP whitelist, rate limiting
- Health check endpoint, structured error codes, exponential backoff
v19.0.1.0.0 — October 2025
Initial Release
- OAuth2 authentication via Microsoft Azure AD
- Bidirectional sync with configurable intervals (5–240 min)
- Automatic folder creation on file moves
- Deletion logging and restore capability
You May Also Like
Intelligent document classification, routing, and retention policies for Odoo Documents.
€199AI provider management, wizard base class, and health monitoring. Required dependency for SharePoint Sync.
FreeNetwork printer scan-to-Odoo with automatic document classification and workspace routing.
€49Background queue processing, shared security groups, and reusable technical patterns for PraetorX modules.
FreeMade with ♥ by Syntax & Sabotage
© 2026 Syntax & Sabotage, Lars Weiler. All rights reserved. OPL-1.
Impressum · support@syntaxandsabotage.io
Odoo Proprietary License v1.0 This software and associated files (the "Software") may only be used (executed, modified, executed after modifications) if you have purchased a valid license from the authors, typically via Odoo Apps, or if you have received a written agreement from the authors of the Software (see the COPYRIGHT file). You may develop Odoo modules that use the Software as a library (typically by depending on it, importing it and using its resources), but without copying any source code or material from the Software. You may distribute those modules under the license of your choice, provided that this license is compatible with the terms of the Odoo Proprietary License (For example: LGPL, MIT, or proprietary licenses similar to this one). It is forbidden to publish, distribute, sublicense, or sell copies of the Software or modified copies of the Software. The above copyright notice and this permission notice must be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Please log in to comment on this module
There are no ratings yet!
If you’re using SharePoint anyway, this is a no-brainer.
We’ve been running the SharePoint Sync module for a bit now and honestly it just works.
Setup was easier than expected and once it’s running you kind of forget about it — which is exactly what you want from something like this. Files sync reliably, structure stays intact, and we haven’t run into any weird edge cases so far.
What I like most is that it doesn’t try to be overly complex. It plugs into Odoo cleanly and does its job without getting in the way.
Had one or two questions during setup, support came back quickly and to the point.
If you’re using SharePoint anyway, this is a no-brainer.
Update major odoo versions
Good afternoon, I'm considering buying this module twice for my 2 odoo databases. I do have a question. Once a year, Odoo has a major version upgrade. How long would it generally take you to update this module to support the new version? Let's say Odoo 20 comes out in October, will this module be updated before the end of year?
Update major odoo versions
Lars