Frappe Sync
Sync anything from and or to Frappe
- Author: david-loe
- Repository: https://github.com/david-loe/frappe-sync
- GitHub stars: 1
- Forks: 1
- License: AGPL-3.0
- Category: Integrations
- Maintenance: Actively Maintained
- Frappe versions: develop
Install Frappe Sync
bench get-app https://github.com/david-loe/frappe-sync
Add the Frappe Gems badge to your README
Maintain Frappe Sync? Paste this into your README:
[](https://frappegems.com/gems/apps/david-loe/frappe-sync)
About Frappe Sync
Overview
Sync anything from and to Frappe, allowing a single Sync Definition to describe how a DocType mirrors data from MSSQL, PostgreSQL or Firebird sources.
Prerequisites
- A Frappe bench (>=16.0) with Python 3.14 from the base repo.
- The connector drivers listed below installed globally, because bench apps share the bench-level environment.
Database driver requirements
- MSSQL: install
pyodbcplus the Microsoft ODBC driver for SQL Server. On Debian/Ubuntu this is typicallysudo apt install msodbcsql18 unixodbc-devandpip install pyodbc. - PostgreSQL: use
psycopg[binary]; the wheel bundles libpq, so no system package is strictly required, but libssl and libc6 must be modern. - Firebird: install the Firebird client (
sudo apt install firebird3.0-devor equivalent) and the Pythonfdbpackage. - Auxiliary:
croniteris required for cron parsing when computing due sync definitions.
Those packages are declared in the app dependencies so bench setup requirements pulls them once the app is added to your bench.
Installation
You can install the app with bench:
cd $PATH_TO_YOUR_BENCH
bench get-app $URL_OF_THIS_REPO --branch develop
bench install-app sync
bench setup requirements
Configuration snapshot
Each sync entry links to a Sync Partner (host / port / credentials) plus a Sync Definition describing the DocType, cron schedule, batch size, direction (A->B, A<-B, A<->B), field mapping, value mapping and granular options such as create_new or delete_missing.
The app ships with Desk helpers (Run, Preview, Export YAML, Import YAML, Open Latest Run, Test Connection). Use the YAML export/import as a transport format, but keep secret values out of shared exports.
Security considerations
- Secrets stored on
Sync Partner(username/password) remain in Password-type fields and are never serialized into exports unless you manually copy them out; YAML exports filter those fields when provided by the UI. - The run history stores JSON payloads of Frappe and partner records for debugging. Rotate file permissions for the site where sensitive data is synchronized.
- Avoid creating
Sync Partnerentries that share credentials via exposed fixtures; prefer environment-specific secret management.
Testing & validation
bench --site run-tests --app syncexercises the service and API contracts added so far.- The app relies on bench for asset building and ensures default partner types during migrations (
after_migratehook) so local migrations bring the plan up correctly.
Contributing & CI
The project uses pre-commit with the usual suspects (ruff, eslint, prettier, pyupgrade). Running bench lint indirectly benefits from the same setup. CI workflows run unit tests and pip-audit on every push into develop.
License
agpl-3.0
Related Integrations apps for Frappe & ERPNext
- Insights — Open Source Business Intelligence Tool
- Raven — Simple, open source team messaging platform
- Frappe Whatsapp — WhatsApp cloud integration for frappe
- Frappe Assistant Core — Infrastructure that connects LLMs to ERPNext. Frappe Assistant Core works with the Model Context Protocol (MCP) to expose ERPNext functionality to any compatible Language Model
- Biometric Attendance Sync Tool — A simple tool for syncing Biometric Attendance data with your ERPNext server
- Frappe React Sdk — React hooks for Frappe
- Frappe Js Sdk — TypeScript/JavaScript library for Frappe REST API
- Mcp — Frappe MCP allows Frappe apps to function as MCP servers