Dropbox Backup to Azure Blob
Each night the flow exports new and changed files from a Dropbox folder to an Azure Blob container organized by date, writes a manifest with content hashes for integrity, and reports counts and failures to Teams. Provides a verifiable off-platform backup of Dropbox content.
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 provides a verifiable, off-platform backup of Dropbox content into Azure Blob Storage. Each night it lists files in a configured Dropbox folder, copies the new and changed files into a Blob container organized by date (yyyy/MM/dd), writes an integrity manifest (per-file name, size, last-modified, and Dropbox content hash) alongside them, and posts a run summary to a Microsoft Teams channel.
Why it matters: a single-platform copy is a risk. A hashed, dated Blob backup gives recoverable, verifiable off-site protection of Dropbox data, and the Teams report makes nightly success/failure visible without anyone logging in to check.
Ships Off (demo). Enable Blob versioning / immutability (WORM) for ransomware resilience.
Use Case
IT/DevOps wants a nightly, verifiable backup of critical Dropbox folders to Azure, with an audit manifest for integrity checks and a restore path, plus a daily heads-up in Teams.
Flow Architecture
Nightly 00:30 Recurrence
RecurrenceNightly backup window (00:30).
Initialize Trace, Config & Counters
Initialize variableMints a correlation id, binds the backup folder, container, storage account, and lookback; computes the dated partition (yyyy/MM/dd) and the delta cutoff; seeds the manifest array and the backed-up / failed counters.
List Dropbox Files
Dropbox - ListFolderV2Lists items in the backup folder.
For Each File
Apply to each (concurrency 1)For files (not folders) changed within the lookback window, a try Scope downloads the content (GetFileContentByPath), uploads it to container/yyyy/MM/dd/<name> (Azure Blob CreateFile_V2), appends a manifest entry (name, size, last-modified, integrity hash), and increments the backed-up counter; failures increment the failed counter.
Compose & Write Manifest
Compose + Azure Blob CreateFile_V2Assembles the run manifest (correlation, counts, file entries) and writes manifest-<timestamp>.json to the same dated partition.
Notify Teams
Teams - PostMessageToConversationPosts counts, failures, destination, and correlation id to the channel.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_DropboxBackupFolder | String | /FlowLibs Backup Source | Dropbox folder path to back up. |
| flowlibs_BackupLookbackHours | String | 24 | Delta window (hours) - only files changed within this window are backed up. |
| flowlibs_BackupContainer | String | /nightly-backups | Azure Blob container path. |
| flowlibs_BackupStorageAccountUrl | String | https://yourstorageaccount.blob.core.windows.net | Storage account / blob endpoint (Blob dataset). |
| flowlibs_TeamsGroupId | String | <your-team-id> | Teams team/group id for the report. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Teams channel id for the report. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Dropbox | shared_dropbox | ListFolderV2 GetFileContentByPath |
| Azure Blob Storage | shared_azureblob | CreateFile_V2 |
| 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.
- Recursion into subfolders
- ListFolderV2 lists the root only (the recursive useFlatListing flag is internal). Add an inner loop over subfolders, or trigger per-subfolder, to back up a whole tree.
- True cursor-based delta
- Store the Dropbox list cursor in a Dataverse row between runs and pass it via nextPageMarker for exact since-last-run semantics.
- Canonical content hash
- The manifest uses the Dropbox ETag (revision). For the canonical content_hash, fetch it via GetFileMetadataByPath or the /2/files/get_metadata API.
- Immutability / WORM
- Enable an immutability policy on the backup container.
- Restore flow
- Build a companion flow that reads a manifest and restores files from Blob back to Dropbox.
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.01Date partition
Dated Blob partition.
EXPR.02Delta cutoff
Earliest LastModified to include.
EXPR.03Blob folder path
Destination path for the night's files.
EXPR.04Manifest blob name
Per-run manifest file name.
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.