Dropbox to OneDrive Continuous Sync
On a short schedule, the flow mirrors a Dropbox folder into OneDrive for Business - copying new and changed files, preserving structure, and tracking a sync cursor to avoid duplicates. Keeps a Microsoft-side copy of Dropbox content current.
Provided as-is, without warranty of any kind. Review and test each pattern in a non-production environment before deploying it to live automations. See our Terms.
Overview
This flow keeps a OneDrive for Business copy of a Dropbox folder current. On a short recurrence it reads a saved delta watermark from a Dataverse cursor table, lists the Dropbox source, copies only files changed since the last successful run (preserving relative folder structure under the target root), advances the cursor, and posts a run summary to a Teams channel.
Why it matters: teams that collaborate in Dropbox but live in Microsoft 365 need a current, Microsoft-side copy without manual downloads. A cursor (watermark) makes each run incremental, so unchanged files are not re-copied.
Ships Off (demo).
Use Case
A team collaborating in Dropbox needs that content continuously mirrored into OneDrive for Business. The flow runs unattended every 15 minutes, copies new/changed files, and notifies a Teams channel with per-run counts and a correlation id.
Flow Architecture
Every 15 Minutes
RecurrenceShort cadence so the OneDrive copy stays current.
Initialize Config, Cap & Watermark
Initialize variableLoads the source/target roots, cursor key, Teams ids; sets a per-run file cap (default 50), the default first-run watermark, the cursor row id, a files-copied counter, and a correlation id.
Get Sync Cursor
Dataverse - ListRecordsReads the saved cursor row for this sync pair; a Condition sets the last-synced watermark and cursor row id when one exists.
List Source Files
Dropbox - ListFolderV2Lists the Dropbox source folder.
Filter Changed Files
Filter arrayKeeps only files (not folders) modified after the watermark - the delta set.
Copy Each New File
Apply to each (capped)For each delta file: Dropbox GetFileContentByPath, then OneDrive CreateFile preserving the relative path, then increment the copied counter.
Advance Cursor
Compose + Dataverse Update/CreateCaptures the run time as the new watermark and persists watermark, files-copied, and status to the cursor row.
Post Sync Summary
Teams - PostMessageToConversationPosts files-copied, roots, watermark, and correlation id to the channel.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_DropboxRoot | String | /FlowLibs Sync Source | Dropbox source folder to mirror. |
| flowlibs_OneDriveRoot | String | /DropboxMirror | OneDrive for Business folder that receives the mirrored tree. |
| flowlibs_CursorKey | String | dropbox-onedrive-sync | Cursor row key for this sync pair. |
| flowlibs_TeamsGroupId | String | <your-team-id> | Teams team (group) id for the summary. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Teams channel id for the summary. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Dropbox | shared_dropbox | ListFolderV2 GetFileContentByPath |
| OneDrive for Business | shared_onedriveforbusiness | CreateFile |
| Microsoft Dataverse | shared_commondataserviceforapps | ListRecords UpdateRecord CreateRecord |
| Microsoft Teams | shared_teams | PostMessageToConversation |
Note — All connections are referenced as solution connection references; the flow is portable between environments as long as a connection is mapped at import time.
Customization Guide
Almost every realistic variant of this flow can be implemented by changing environment variable values. A few cases require small edits inside the flow definition — those are called out explicitly below.
- Sync cadence
- Change the Recurrence interval (default 15 minutes).
- Per-run cap
- Adjust varMaxFilesPerRun (default 50) to balance throughput vs throttling.
- Roots
- Point the Dropbox and OneDrive roots at any source/target pair.
- Full first sync
- Leave the watermark at 1900-01-01 to copy everything once; the cursor then makes runs incremental.
- Conflict policy
- Current behavior is newer-wins by modified time; add an existence check before CreateFile for skip-on-exists.
Key Expressions
The flow is intentionally light on Power Fx / WDL gymnastics — the heaviest expressions are the branch-name concatenation and the approval outcome check. They are listed below in the order they appear in the flow.
EXPR.01Cursor lookup filter
Finds the cursor row for this sync pair.
EXPR.02Delta filter
Keeps files changed since the watermark.
EXPR.03New watermark
Captured at run time and written back to the cursor.
EXPR.04Correlation id
Stamped on the cursor row and the Teams summary.
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.