How to Find and Update a SharePoint Item Using Power Automate
Question details
The user needs to locate a specific SharePoint list item by matching a serial number submitted via Microsoft Forms, and then update other columns of that SharePoint item using a Power Automate flow.

- Product
- Power Automate
- Device & OS
- not provided
- Scenario
- Automating data updates by triggering a Power Automate flow from a new Microsoft Forms response to modify an existing SharePoint list record.
- Observed behavior
- The flow often fails at the 'Get items' action with an 'Invalid OData filter' error. This typically happens when the user inputs the column's display name or literal text string instead of the internal SharePoint column name and dynamic response value.
Verify that you have 'Edit' permissions on the target SharePoint list and ensure you have submitted at least one test response in Microsoft Forms to generate dynamic content for the flow.
Correct the OData Filter Query Syntax
Fix the 'Get items' filter error by replacing the display name with the SharePoint internal column name and inserting dynamic content properly.
SharePoint often assigns a different internal name to a column if it was created with spaces or special characters. Power Automate OData queries require this exact internal name to function correctly.
Navigate to your SharePoint list, click the Gear icon, and select 'List settings'. Scroll to the 'Columns' section and click on your target column (e.g., Serial Number). Look at the end of the page URL for 'Field='; the text immediately following it is your internal column name.
Open your flow in edit mode and locate the 'Get items' SharePoint action. In the 'Filter Query' field, type the internal column name followed by the 'eq' (equals) operator.
Click inside the Filter Query field next to 'eq', open the Dynamic Content menu, and select the specific question (e.g., 'Serial Number') from your 'Get response details' action. Do not type literal text like "Serial number".
Add an 'Update item' action. Because 'Get items' returns an array, Power Automate will automatically wrap it in an 'Apply to each' loop. Map your SharePoint columns to the corresponding dynamic data from the Forms response.

Troubleshoot via the Power Automate Community
If syntax corrections do not resolve the issue, gather your flow details and consult experts in the official Microsoft community.
Enhance Your Daily Productivity with WPS Office
While Power Automate and SharePoint manage complex backend workflows, WPS Office is the ideal lightweight solution for your everyday document creation, spreadsheet tracking, and presentation needs. Experience familiar interfaces, robust compatibility, and seamless migration without expensive subscriptions.
- 1. Download the software: Visit the official WPS Office website and click the free download button for your operating system.
- 2. Install and launch: Run the lightweight installer and open the suite to access Writer, Spreadsheets, and Presentation modules instantly.
- 3. Open existing files: Directly open any exported SharePoint lists, Excel reports, or Word documents natively within WPS Office with full formatting retained.

Frequently Asked Questions
Why does my OData filter return an 'Invalid query' error?
This error usually happens when you use a column's display name instead of its internal system name in the 'Filter Query' box. It can also occur if you forget to wrap text-based dynamic values in single quotes, or if you use an unsupported comparison operator.
How can I tell if a SharePoint column is a number or text?
Go to your SharePoint list, click the gear icon, and select 'List settings'. Scroll down to the 'Columns' section. Next to your column name, you will see its data type listed under the 'Type' column (e.g., 'Single line of text' or 'Number').
Why does Power Automate put my 'Update item' action into an 'Apply to each' loop?
The 'Get items' action is designed to return a list (or array) of items, even if your filter query only matches a single row. Power Automate forces the 'Apply to each' loop to ensure it handles every item that might have been returned by that array.




