I recently worked on a project that used Flow to update a SharePoint list each time an item was updated in the Power Apps Common Data Service. In order to update a SharePoint list item, you must have the unique ID, even if there are other fields that are unique to the item. I spent a while searching through forums to find out how to accomplish this, so I’m documenting it here in the hopes it helps someone else.
We know we need a starting point from which the updates originate. For me, that was when a record is updated in an entity in the Common Data Service, but this could be anything (an email arriving, an update occurring in another SharePoint list, etc.). This source doesn’t contain the unique ID for the list item, since that ID is unique to SharePoint. In my example below I have a CDS entity called Tactic. Tactic has three fields that are submitted to the SharePoint list upon creation: Tactic Name, ID, and Tactic ID. My SharePoint list is called Meagan Test Flow List and contains the corresponding fields Title, TacticID, and RecordID.
The next part is the trick that makes this work. You’ll need to add a new action and choose SharePoint – Get items. Be sure that you choose SharePoint Get Items (items is plural). There is another choice called SharePoint – Get Item, which is not the same and will not work for this purpose. In the Get Items action, populate the site address and list name. Then expand the advanced options and add a filter. This filter should use a field in your source that uniquely identifies a record. For my example, the ID field in the CDS entity has unique values for each record. My filter condition is RecordID eq and then the CDS field. RecordID is an integer. If the value on which you are filtering is a string, you’ll want to put single quotes around it.
Once you have completed your filter condition, you can add the final action: SharePoint – Update Item. Flow will automatically add a for each container as you begin to fill in the required fields – this is fine. Even though you are only updating a single record, the Get Items action could potentially get multiple records. As long as you are using a field that uniquely identifies the single record you want to change, this will work.
You should end up with something resembling the image below.
You should populate the ID field with the ID from the Get Items result. You want to make sure you have mapped the fields from your source to any field that should be updated. The only field I was updating in my list was Title. The TacticID and RecordID do not change after creation.
That’s all there is to it. May the Flow be with you.
Thanks Meagan, this was invaluable as I was laboring to try and direct ‘Add Attachments’ to a specific list item
Thanks for posting this, I’m trying to do something very similar using Salesforce instead of CDS as my source. The one thing I seem to be missing is in the Get Items filter query where you used RecordID eq and then the dynamic ID field from CDS. I assumed that RecordID is a column in your SharePoint list, but when I try to specify a column (SFAcctID) from my SharePoint list I get an error: “The expression \”SFAcctID eq 0011W00001uL32eQAC\” is not valid.
What have a I overlooked?
I’m not sure. The filter statement is just OData filter syntax. Maybe this will help? https://www.chakkaradeep.com/2018/05/01/deep-dive-into-get-items-and-get-files-sharepoint-actions-in-microsoft-flow/
Hi Meagan, I have a somewhat similar situation using a survey built in MS Forms, but I want to create an ID with a “BI-” prefix. Would I just concatenate the ID field in “Update Items”?
Thanks,
Terry
Thank you very much!
Thanks very much! Hard to find a good tutorial on this!
your tutorial is a lifesaver! thank you so much