Dropbox Folder Provisioning for New Clients
When a new client is created in Dataverse/CRM, the flow provisions a standard Dropbox folder structure from a template, writes the folder path and a navigation link back to the client record, and notifies operations in Teams. Standardizes Dropbox workspace setup automatically.
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 standardizes Dropbox client-workspace setup. When a new client row is created in Dataverse, it provisions a consistent Dropbox folder structure from a template, writes the resulting path and a navigation link back onto the client record, and notifies the operations team in Microsoft Teams.
Why it matters: manual folder setup is inconsistent and slow. Templated provisioning gives every client a uniform, predictably-named Dropbox workspace the moment the record is created - no human steps.
Connector scope note: the standard Dropbox connector exposes only file/folder CRUD (no create-shared-link, add-member, or file-request operations), so this build provisions folders with real CreateFolder calls and provides a derived navigation deep-link instead of an API-created share link. See the customization guide to add true sharing via HTTP + the Dropbox API.
Ships Off (demo).
Use Case
A services/operations team wants every new client to get the same Dropbox structure automatically: a top-level folder named Client Name - CODE plus a standard set of subfolders (contracts, deliverables, invoices, uploads, correspondence). The folder path and an open-in-Dropbox link are stored on the client record so anyone can jump straight to the workspace.
Flow Architecture
When a New Client Is Created
Dataverse - SubscribeWebhookTriggerFires when a new row is added to flowlibs_clientonboardings (Create, org scope).
Initialize Run ID & Config
Initialize variable (x9)Mints a correlation id and binds the client root path, folder template, Dropbox web base url, client table name, Teams group/channel, plus the client name and code from the new row.
Compose Client Folder Name
ComposeBuilds Client Name - CODE.
Create Client Root Folder
Dropbox - CreateFolderCreates the top-level client folder under the root path.
Compose Client Folder Path
ComposeFull path root/Client Name - CODE.
Create Template Subfolders
Apply to each -> Dropbox CreateFolderCreates each template subfolder inside the client folder (concurrency 1).
Compose Folder Deep-Link
ComposeNavigation deep-link to the folder (spaces URL-encoded).
Write Back to Client Record
Dataverse - UpdateRecordWrites the path, URL, status Provisioned, and correlation id back to the client row.
Post Summary to Teams
Teams - PostMessageToConversationPosts a summary (client, path, link, template, correlation id) to the ops channel.
Environment Variables
| Schema name | Type | Default | Description |
|---|---|---|---|
| flowlibs_DropboxClientRootPath | String | /Clients | Parent Dropbox path under which each client folder is created. |
| flowlibs_FolderTemplate | String | ["01 Contracts","02 Deliverables","03 Invoices","04 Shared Uploads","05 Correspondence"] | JSON array of standard subfolder names. |
| flowlibs_DropboxWebBaseUrl | String | https://www.dropbox.com/home | Base URL for the folder navigation deep-link. |
| flowlibs_ClientTableName | String | flowlibs_clientonboardings | Documentation of the client entity-set name (actions hardcode it). |
| flowlibs_TeamsGroupId | String | <your-team-id> | Teams group/team ID for the notification. |
| flowlibs_TeamsChannelId | String | <your-channel-id> | Teams channel ID for the notification. |
Connectors & Connections
| Connector | API name | Actions used |
|---|---|---|
| Dropbox | shared_dropbox | CreateFolder |
| Microsoft Dataverse | shared_commondataserviceforapps | SubscribeWebhookTrigger UpdateRecord |
| 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.
- Folder structure
- Edit flowlibs_FolderTemplate (JSON array) to change the standard subfolders; edit flowlibs_DropboxClientRootPath to relocate the client root. No flow edits needed.
- Naming convention
- Adjust Compose Client Folder Name to change how the top-level folder name is built (e.g. include region or onboarding date).
- Real sharing / file requests
- The Dropbox connector cannot create shared links, add members, or open file requests. Append an HTTP action calling the Dropbox API (/2/sharing/create_shared_link_with_settings, /2/sharing/add_folder_member, /2/file_requests/create) with an OAuth token stored in a Key Vault-backed env var, then write the returned link to a new column.
- Offboarding
- Add a sibling flow on client-close to archive or rename the folder.
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.01Client folder name
Top-level client folder name.
EXPR.02Full client path
Full Dropbox path for the client folder.
EXPR.03Subfolder loop source
Parses the JSON template array into items for the loop.
EXPR.04Navigation link
Builds the open-in-Dropbox deep link.
EXPR.05Record id for write-back
The client row id used by Update record.
Comments
Sign in to join the conversation.
Sign inNo comments yet. Be the first to share your experience with this flow.