Microsoft Forms allows users to submit files directly through form responses, making it a practical tool for collecting documents, images, and other attachments at scale. When organizations rely on this feature for data collection, the challenge becomes managing those attachments efficiently without manual downloading and re-uploading. Power Automate bridges this gap by providing an automated pipeline that captures file submissions and routes them to the correct destination inside SharePoint. Knowing how this system works from the ground up helps you build flows that are reliable and scalable.
The attachment feature in Microsoft Forms stores submitted files temporarily in a OneDrive folder linked to the form owner’s account. Each submission creates a folder with the respondent’s name and timestamp, and files are placed inside that folder. Power Automate can access this location through the OneDrive for Business connector, retrieve the binary content of those files, and then transfer them wherever needed. This behavior is central to any flow design that targets SharePoint as the final storage destination.
Why SharePoint Works Best
SharePoint is the preferred destination for form attachments because it offers structured document management, version control, and permission settings that plain OneDrive folders lack. When files land in a SharePoint document library, they become part of a governed environment where teams can search, filter, and access content based on defined roles. This matters especially in departments handling contracts, HR documents, compliance forms, or project submissions that require auditability. Choosing SharePoint over ad-hoc storage from the start reduces future migration headaches.
Beyond storage, SharePoint lists allow you to connect metadata directly to the files you save. When a respondent submits a form, you can capture their name, submission date, selected options, and file references all within a single SharePoint list item. This linkage transforms isolated attachments into structured records that business users can query, report on, and act upon. The combination of a list item and its associated files in a library gives organizations a complete picture of each submission without any manual effort.
Setting Up Microsoft Forms Correctly
Before building the automation, the form itself must be configured to accept file uploads. Open Microsoft Forms and either create a new form or edit an existing one. Add a file upload question by selecting the upload option from the question type menu. You can set limits on the number of files per response and restrict accepted file types, which helps control what enters your SharePoint environment. Keeping these limits intentional prevents storage bloat and ensures only relevant files reach the destination library.
Once the form is ready, verify that it is shared correctly with the intended audience. Forms shared within your organization allow Power Automate to trigger on new responses using the responder’s identity, while anonymous forms require slightly different handling for metadata. Test the form by submitting a response with at least one attachment to confirm that files appear in the linked OneDrive folder. This test submission becomes useful later when mapping dynamic content inside the flow builder.
Power Automate Flow Trigger Setup
The flow begins with a trigger that fires every time a new response is submitted to the form. Inside Power Automate, create a new automated cloud flow and search for the Microsoft Forms connector. Select the trigger labeled “When a new response is submitted” and connect it to your Microsoft Forms account. From the dropdown, choose the specific form you want to monitor. This trigger activates the entire flow each time someone fills out and submits the form, passing the response ID downstream.
After placing the trigger, add the “Get response details” action from the Microsoft Forms connector. This action takes the response ID from the trigger and retrieves the full set of answers submitted by the respondent. The file upload field returns a JSON array containing the names and paths of each uploaded file. This JSON output is what the rest of the flow depends on to locate, retrieve, and transfer attachments to SharePoint correctly.
Parsing the Attachment JSON Data
The file upload question in Microsoft Forms returns attachment information as a JSON string, not a ready-to-use array. To work with individual files, you need to parse this string using the “Parse JSON” action in Power Automate. Add this action after “Get response details” and paste the output from the file upload field into the content box. Define a schema that includes the file name and the full path so Power Automate can reference each property cleanly in later steps.
Generating the schema is straightforward if you have a test submission available. Click the “Generate from sample” button inside the Parse JSON action and paste in the raw JSON output from your test response. Power Automate will automatically create a schema that matches the structure of the attachment data. Once this schema is in place, downstream actions can reference individual properties like file name and path using dynamic content, which simplifies the build process considerably.
Looping Through Each Attachment
Because a single form response can include multiple files, the flow must process each one individually using a loop. Add an “Apply to each” control action and set its input to the array produced by the Parse JSON step. Everything placed inside this loop will execute once per attachment, meaning each file gets its own dedicated retrieval and upload sequence. This structure ensures no file is skipped regardless of how many attachments a respondent submits in a single response.
Inside the loop, the first action should retrieve the actual file content from OneDrive. Use the “Get file content using path” action from the OneDrive for Business connector and pass in the file path extracted from the parsed JSON. This action returns the binary content of the file, which is what SharePoint needs to store it properly. Without this step, you would only have a reference to a file location rather than the actual data required to create a copy in SharePoint.
Creating the SharePoint Library File
With the file content retrieved, the next action uploads it to a SharePoint document library. Use the “Create file” action from the SharePoint connector and specify the site address and folder path where attachments should land. Set the file name using the dynamic value from the parsed JSON and set the file content to the output from the OneDrive retrieval step. Each iteration of the loop creates one new file in SharePoint, building a complete set of attachments for that submission.
Organizing uploaded files into subfolders by respondent or submission date keeps the library manageable over time. You can construct a dynamic folder path using the respondent’s name or the submission timestamp available from the form response details. Power Automate supports string concatenation in action fields, so building a path like “Submissions/2024-06/JohnDoe” is achievable without custom code. This folder strategy prevents all files from piling into a single flat directory as submission volumes grow.
Adding a SharePoint List Item
After saving the attachments, the flow should create a corresponding item in a SharePoint list to serve as the submission record. Add the “Create item” action from the SharePoint connector and map form response fields to the appropriate list columns. Fields like respondent name, email, submission date, and any form answers should populate their matching columns. This list item acts as the index record for the submission, making it possible to locate and review all related files from a structured view.
To link the list item to the uploaded files, include a column that stores the SharePoint folder path or a direct URL to the document library subfolder. When someone opens the list item, they can follow the link directly to the associated attachments without searching through the library manually. This connection between list metadata and physical files is what gives the solution its practical value for teams that need both record-keeping and document access in one place.
Handling Errors and Empty Fields
Not every form submission will include attachments, especially if the file upload question is optional. Adding a condition before the loop prevents the flow from failing when the attachment field is empty. Use a condition action to check whether the parsed JSON array has a length greater than zero before entering the loop. If the array is empty, route the flow to a branch that still creates the SharePoint list item but skips the file upload steps entirely.
For submissions that do include files, adding error handling inside the loop protects the flow from partial failures. Configure the “Apply to each” loop’s settings to continue on error so that a problem with one file does not stop the remaining attachments from being processed. You can also add a “Send an email” or “Post a message” action in the error branch to alert an administrator when a file fails to upload. This combination of prevention and notification keeps the flow running smoothly in production.
Testing the Complete Flow
Before deploying the flow for live use, run it against a test submission with multiple attachments of different file types. Open the flow run history after submitting the test form and inspect each action to confirm it executed successfully. Check that the correct number of files appeared in the SharePoint library and that the list item was created with accurate metadata. Comparing the test output against the form submission side by side reveals any mapping errors before real data is involved.
Pay special attention to how file names are handled during testing. Special characters in file names, such as ampersands or slashes, can cause SharePoint file creation to fail. Add a “Compose” action before the file upload step to sanitize the file name using the replace function, swapping problematic characters with safe alternatives. Testing with files that have varied naming conventions helps catch these issues early and makes the flow more resilient when deployed to a broader user base.
Managing Flow Run Frequency
Power Automate cloud flows triggered by form responses run immediately after each submission by default. For forms with high submission volumes, this can generate a large number of concurrent flow runs that stress connector limits. Monitor the flow’s run history during early deployment to identify any throttling errors from the SharePoint or OneDrive connectors. If throttling occurs, consider adding delay actions between steps or switching to a scheduled flow that batches responses at set intervals.
Connector limits vary by license tier, so reviewing the Power Platform service limits documentation before deployment is worthwhile. Users on standard licenses have lower action execution limits than those on premium plans, which affects how many files can be processed per day. If the form is expected to receive dozens of submissions daily with multiple attachments each, upgrading to a premium plan or distributing the load across multiple flows may be necessary to maintain reliable performance.
Permissions and License Requirements
The account used to build and run the flow must have appropriate permissions on both the Microsoft Forms and SharePoint sides. For OneDrive access, the flow owner must be the same account that owns the form, since attachments are stored in that account’s OneDrive. For SharePoint, the account needs at least contribute permissions on the target library and list. Misaligned permissions are one of the most common causes of flow failures that are difficult to diagnose without checking each connector’s connection account.
Licensing also plays a role in what connectors are available. Microsoft Forms and SharePoint connectors are available in standard licenses, but some advanced actions or premium connectors used in more complex variations of this flow may require a Power Automate Premium license. Verify the license requirements for every connector used in the flow before rolling it out organization-wide. Building on a connector that requires a license not available to all users can cause the flow to fail when run under a different account.
Maintaining the Flow Long Term
Once the flow is in production, periodic reviews ensure it continues working as Microsoft updates its connectors and APIs. Changes to the Microsoft Forms response schema or SharePoint API behavior can break flows that rely on specific dynamic content mappings. Subscribe to the Power Automate blog or monitor the Microsoft 365 message center for announcements that could affect your flow’s behavior. Keeping a documented record of the flow’s logic also makes it easier for a colleague to maintain it if the original builder is unavailable.
Version history in Power Automate allows you to restore a previous version of the flow if an update causes problems. Always save a backup description of major changes in the flow’s notes field before editing a live flow. For organizations with many flows, using solutions to package and manage flows as deployable units makes governance much easier. A well-maintained flow continues delivering value for months or years without requiring significant rework.
Conclusion
Automating the transfer of Microsoft Forms attachments to a SharePoint list using Power Automate delivers a structured, hands-free process that eliminates manual file handling and reduces the risk of lost or misplaced submissions. The solution combines several connected components, including the form trigger, OneDrive file retrieval, JSON parsing, looping logic, SharePoint file creation, and list item population, into a single automated workflow that runs reliably each time a response is submitted. Each component plays a specific role, and understanding how they connect gives builders the confidence to extend or troubleshoot the flow when needed.
The value of this automation goes beyond convenience. Organizations that collect sensitive documents through forms benefit from the governance and access controls that SharePoint provides, ensuring files are not sitting in personal OneDrive folders indefinitely. Teams reviewing submissions gain a structured list view where every record links directly to its associated files, making audit trails and reporting far more practical. As submission volumes grow, the flow scales without requiring additional administrative effort, maintaining the same level of consistency whether it processes ten responses or ten thousand.
Building this flow also opens the door to further enhancements. You can extend it to send confirmation emails to respondents, notify reviewers when high-priority attachments arrive, trigger approval workflows based on form answers, or archive older submissions to cold storage automatically. Power Automate’s broad connector library means the same foundation built here can integrate with Teams, Outlook, Azure, Dynamics, and dozens of other platforms. What begins as a simple file-saving solution becomes a cornerstone of a broader document management strategy that serves the organization well into the future.