Example 6: Google Drive -> SharePoint file copy with Fork
Why this example
A field-services team receives weekly compliance documents into a shared Google Drive folder. The North-American and EMEA back-offices each need their own copy on a regional SharePoint document library so the auditors can find them in the system they already use. The Fork node sends each file row to both downstream branches in parallel.
Helix Beverages context: Helix's largest national grocer drops compliance documents into a shared Google Drive folder each week. The IT team's audit shop lives on SharePoint, but Marketing wants the same files in their own Drive workspace. This recipe mirrors every drop into both worlds at once (see the Helix overview for the retailer-compliance backdrop).
At a glance
- Connectors used: Google Drive, SharePoint Files
- Nodes used: Start, Source, Fork, Load (x2)
- Schedule: every 30 minutes
- Direction: One-way fan-out (Drive -> SharePoint NA + SharePoint EMEA)
Canvas
Fork emits each row on every output port simultaneously, so each file lands on both SharePoint sites in parallel without re-reading from Google Drive.
Step-by-step
| # | Node | Action | Key configuration | Output shape |
|---|---|---|---|---|
| 1 | Start | -- | -- | -- |
| 2 | Source | Google Drive: List Directory | Folder ID for the incoming root. Include globs *.pdf, *.docx. Recursive: true. Files-only: true. | { fileName, fileId, mimeType, modifiedAt, sizeBytes, downloadUrl } rows |
| 3 | Fork | -- | Two output ports (out1 -> NA, out2 -> EMEA). Each row is emitted on both ports. | Same row on both branches |
| 4 | Load: SharePoint NA | SharePoint: Upload File | Site URL: https://acme.sharepoint.com/sites/Compliance-NA. Library: Documents. Path template: Incoming/[modifiedAt as yyyy/MM]/[fileName]. Overwrite policy: keep-newer. | -- |
| 5 | Load: SharePoint EMEA | SharePoint: Upload File | Site URL: …/Compliance-EMEA. Same path template, same overwrite policy. | -- |
Variations
- Filter by file type per region -- if NA wants PDFs only and EMEA wants DOCX only, add a Filter on each Fork branch.
- Replace SharePoint with OneDrive -- the Load action's connector switches; the action shape is identical.
- Add a "delete from source after copy" step -- chain a third node after each Load that calls Google Drive's
Delete Fileaction with the originalfileId. Wire each branch'soutport through the new node serially so the source is only deleted once both regional copies succeed (use the AND-join capability: wire both branches'outports into a single downstream node that waits for both). - Different file hubs -- the Fork pattern works identically when the destinations are Dropbox, S3, or Azure Blob.