Use Power Automate to copy multiple selections from Choice columns between Microsoft Lists

In this blog post I will show how to copy multiple selected Choice column values to another list. This post is a supplement to Use Power Automate to move Microsoft Lists items to another list.

I am using two lists called Source and Destination. Both Lists have a choice column called “Choice” that allows multiple selections.

Choice column with allow multiple selections

Create a new Flow from the Source list > Automate > Power Automate > See your Flows > Create new > Automated from blank. Provide a Flow name, i.e. “Source to Destination”, select the SharePoint “When an item is created” trigger and click “Create”.

When an item is created

Insert a new “Initialize variable” step. Set Name to “varChoice” and Type to “Array”.

Insert a new “Append to array variable” step. Set Name to “varChoice” and Value to:

{
"Value": "@{items('Apply_to_each')?['Value']}"
}

“Choice Value” will cause the “Append to array variable” to be contained in a “Apply to each” loop.

Append to array variable

Insert a new SharePoint “Create item” step. Set Site Address to your target site and destination list. Set Title to “Title” and Choice to “varChoice”.

Important: make sure to switch the Choice column to “Switch to detail inputs for an array item”. Hint: its a small icon to the right of the Choice section.

SharePoint create item

My completed Flow looks like the image below:

Completed FLow

Test by creating a new entry in the “Source” list with multiple selections in the “Choice” column.

Test item

The “Append to array variable” step will create the following string:

{    "Value": "Choice 1"  },  {    "Value": "Choice 2"  },  {    "Value": "Choice 3"  }

Microsoft Lists will interpret these values as valid choice selections.

Destination item

Thanks for reading.

NY

34 thoughts on “Use Power Automate to copy multiple selections from Choice columns between Microsoft Lists

  1. how would this look for a form with more than one multiple questions with the same goal of having the flow add and populate an item in the list from the form. Would it be easiest to have a parallel branch with a delay for each choice variable?

    Like

    1. Hi arkoz,

      You would have to duplicate the variable and apply to each section. I don’t think you need a parallel branch.

      Thanks for reading!

      NY

      Like

  2. Is it possible to transfer the data from my column called “Markets” from a multiple choice source list to a column called “Markets” but made of line of text in the destination list? I was told this is the best way if I want to use my flow to be used on another list in a different language (Spanish, French, etc) The process seems to work fine for me if I do multiple choice to multiple choice. But the destination list doesn’t need the same visual display of the information like the Source list. My destination says { “Value”: “Choice 1”}, {“Value”: “Choice 2” }, instead of just Choice 1, Choice 2. Can you help?

    Like

    1. Hi Kerlyne,

      Yes, it is possible using an expression. In my sample code, the column name is “Products”.

      join(xpath(xml(json(concat(‘{“body”:{“value”:’, item()?[‘Products’] , ‘}}’))), ‘/body/value/Value/text()’), ‘, ‘)

      I hope that helps and thanks for reading.

      NY

      Like

  3. Hello Norm, I am trying to create a flow exactly like the one in your article “Use Power Automate to move Microsoft Lists items to another list”. But I also have a choice column in the source list that needs to copy to a choice column in the destination list. However, I’m having trouble with creating the “Append to array variable” discussed in this article. Could you explain in further detail how to integrate the choice variable array into the flow in your article “Use Power Automate to move Microsoft Lists items to another list”?

    Like

    1. Hi Bryce,

      The Initialize variable, Append to variable steps should be between the Get item and Create item steps.

      I hope this helps.

      NY

      Like

      1. This is really helpful. I was able to get my first multi-select choice column to move over to my other lists but I have about 3 others multi-select choice columns.

        How do you set up multiple multi-selects choice columns?

        Like

      2. Hi Dwayne,

        Repeat the Choice variable and value assignment for each choice column.

        Hope this helps and thanks for reading!

        NY

        Like

  4. I set this flow up and it works great except for that it is copying over all available choices. How can I alter it so it only copies over the selected choices?

    Like

    1. Hi Hannah,

      The array variable needs to be reset after the create item step. I’ll update the blog post to show this. In the meantime, create a new array variable and don’t specify a value. Add a new set variable action after the create item step and set varChoice to the new empty variable.

      Hope that makes sense and thanks for reading!

      NY

      Like

  5. Hi Norm. Thanks for this solution, it worked perfectly for copying a multiple choice where the field values were just words. However, it doesn’t seem to work when it is a multiple choice/value Person field (i.e. AD Account names). Any thoughts on how to copy that kind of value? There doesn’t appear to be a “Contact Value” field available. Thanks/

    Like

      1. Could you please help with this issue? I have searched high and low for an answer and am totally stumped. Trying to set up an archive list to move items to once complete, but one field is a “person” field with multiple entries (for team members)–it just creates separate items on the new list for each name when I run.

        Like

      2. Hi Kate,

        I’ll dig into this one and if it works create a blog post around it. More to follow.

        Thanks for reading!

        NY

        Like

  6. Hi Norm,

    I am using the trigger of this post, but to then put the value of the choice into a word template. So I start with when item is created or modified, on a list on sharepoint, I want it to create a word doc from a template. The only point where I still get an error, is in the fields that I allowed as multiple choice. Do you think it would work, by doing it exactly the same and referencing to varchoice in the field of the word template? Thank you

    Like

    1. Hi Mari,

      I think it could work but the text would include the additional string characters stored in the variable. You should look at concatenating the multiple choices into a single string “Choice 1, Choice 2, Choice 3” using a “Apply to each” loop and “Append to string variable” action.

      I hope that helps.

      NY

      Like

  7. My flow contains a switch. The trigger, “When an item is created or modified,” goes directly to the switch.

    Flow is having me do the initialize and append variable steps before the switch, but my “Create item” is inside the switch. When I go to add the “varChoice” option to that field, it does not appear in dynamic content.

    Is it possible to use the initialize variable with a switch? Or, is there a longer code for “varChoice” that I can use inside my expression?

    Like

    1. Hi Karen,

      I believe the variable needs to be declared prior to the Switch so it remains in scope.

      I hope that helps and thanks for reading!

      NY

      Like

      1. I figured it out!

        I was struggling to add the varChoice purple step to my list column in the “Create item” step because the option to add it did not show in the dynamic content list. I finally noticed the option to toggle between “text” and “array” to the right of this column option; my flow showed as the letter T. (Above yours shows as already selected to be the array.)

        Once I toggled it changed to an “array” icon and the purple varChoice option appeared on the dynamic content list.

        Thanks so much!

        Like

  8. Hi Norm,

    Do you know if this would work when creating an item on a SharePoint calendar? I have a flow that creates an item on a calendar based on a SharePoint list that has columns that allow multiple selections. If multiple selections are picked, I get multiple items created.

    Thanks

    Like

    1. Hi Logan,

      I don’t know for sure but I think its a reasonable approach as most SPO calendars are a list on the backend.

      Thanks for reading!

      NY

      Like

  9. Hey Norm!

    I hope this finds you well. I am trying to replicate the exact same flow with the one change of trigger being “When an item is created or updated”. The issue I seem to be experiencing is that the variable is not available from my dynamic content in the create step at the end of the flow. Do you have any suggestion as to why this might be happening?

    Best,

    Jordan

    Like

  10. Hi Norm.
    First of all a small point on your instructions: where you write: ““Choice” will cause the “Append to array variable” to be contained in a “Apply to each” loop.” it is not clear where you enter “Choice” , nor whether you use Choice Value or Choice ID (which are the two items that I see in dynamic content frame.)

    Now my real problem: While I believe I managed to get around that previous point, when I then want to use the Array in the Create Item step, I get an error stating that the parameter is read only.
    Looking at the raw inputs in the flow debug, I see that the append array has resulted in the following:
    “item/Product_x0020_Audience”: [
    {
    “Value”: “xxxxxxxxx”
    },
    {
    “Value”: “yyyyyyyyyyy”
    },
    {
    “Value”: “zzzzzzzzzzzz”
    },
    {
    “Value”: “aaaaaaaaaaaaaaa”
    },
    {
    “Value”: “bbbbbbbbbbbbbbbbb”
    }
    ],
    (all the letter strings are valid values of my multi-value lookup column)
    I really don’t understand why this won’t write to the target item

    Like

    1. Hello WeePee,

      I’ve updated the language in the post to clarify Choice Value will cause the “Append to array variable” action to move into a “Apply to each” loop.

      I would confirm that the source and destination columns are both Choice columns that allow multiple choices.
      I would also confirm that the double quotes are straight double quotes. WordPress will sometimes change the quotes to ” vs “.

      Thanks for reading!

      NY

      Like

  11. Hello Norm! I am trying to use a multiple choice selection from one lists and add a numerical value to each choice OR I would like to at least be able to select the same choice more than one time so that it can populate the “total number of that specific choice”. Is there a flow I can make to achieve this goal or a code or an option that I can use to achieve this? For example; If my multiple choice is “Computer, Dock,Phone”, I want to be able to select the same option more than once to achieve getting the quantity of each option in return so that in another column, I can have a calculated value giving me the total of each option.

    Like

    1. Hi Dawuud,

      Interesting use case. I wonder if a SharePoint Calculated column would work in this scenario?

      Thanks for reading and let me know how you make out!

      NY

      Like

  12. Hi Norm. Really great post. However, I’m trying to replicate this with two lists (source and destination) that have a choice column that is a lookup to a third list. Power Automate will recognize this in that it will only list the field id in the destination list where the item is supposed to be created. So I replaced the “Value” in the JSON by “Id” but the flow will fail because apparently my input can’t be converted to integer?! I also can’t switch to “detail input for an array paramenter” in my create item step… would you have any ideas on how to solve this? Every hint would be much appreciated and I can also share more details if needed… Thanks!

    Like

    1. Hi Jorge,

      Assuming that you are using the same Lookup column definition (to List #3) in both Source and Destination lists. Do the following:

      – Add new “Initialize variable” action and set type to “Array”
      – Add new “Append to array variable” action and set value to:
      {
      “Id”: “@{items(‘Apply_to_each’)?[‘Id’]}”
      }
      – Update the “Create item” action to use the Lookup variable.

      I just tested this and it works. I’m glad you asked this as I just finished up a blog post around this content.

      Let me know how you make out.

      NY

      Like

      1. Hi Norm,

        Thank you so much for your reply! Much appreciated. It finally works! After your comment I went back to check if the lookup columns in source and destination were really the same and found out that I had forgot to tick the “Allow multiple values” box in the destination list… Anyways, really appreciate your quick reply and thanks for the great content!

        Like

Leave a comment