“I’m trying to synchronise two SP lists using Power Automate flow, but it doesn’t copy the multiple choice column values properly. It keep only one of the selected values.”
Copying SharePoint items from one list to another is quite straightforward. You get the item properties in one list, and use them to create/update the item in the other list. Unless it’s a multiple selection column. Instead of copying all the values, Power Automate will add an ‘Apply to each’ in the flow, and always store only the last value. Just one value from all the ones selected. Why? And how to make it work properly?
Why is it saving only the latest value?
Once you enable multiple selection in a column, the data type will change into an array. And since arrays can contain multiple values, Power Automate wants to process them all, one by one. So it adds ‘Apply to each’. For each selected value it’ll do an update.
While it might seem that it updates only the last value, it doesn’t. It updates the item with all the values, but with each update it’ll rewrite the value with the next one. At the end it keeps the last one.
How to do a proper update?
Since you don’t know in advance how many values were selected, you must use a dynamic input. One that can contain 0-n values and update them all at once. For this reason Power Automate offers the ‘input entire array’ option.
Instead of a specific dynamic content you can build an array with the values. Each such input array has a different format, for multiple choice columns it’s the format below.
[
{
"Value": "value1"
},
{
"Value": "value2"
}
]
The easiest way to create such an array is to use the ‘Select’ action. Put the multiple selection choice column as the input, and map the Value to the ‘Value’ key.
It’ll produce an array that you can then use in the update action. No extra ‘Apply to each’, no rewriting the value.
Summary
If you copy SharePoint items using Power Automate flows, you must be careful about all the multiple selection columns, not only the choice as lookup and people picker will behave in the same way. But Power Automate is prepared for this alternative, you just have to do the update a bit differently. Instead of using the dynamic content directly, turn all the selected values into an array. Switch the input to ‘input entire array’, use the array as the input, and update all the values at once.
When I try your example it adds another Apply to Each loop.
This happens when I set the Map to “Choice Value” and not “Choice”.
This creates an inner loop that can’t find the outer loop.