cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
smorley
Helper V
Helper V

Array must be of primitive type error when appending to an array variable

Hi everyone,

I'm trying to append to an array variable, and I'm getting an error.

Flow save failed with code 'WorkflowRunActionInputsInvalidProperty' and message 'The inputs of workflow run action 'Append_to_array_variable' of type 'AppendToArrayVariable' are not valid. The provided value of '[ { "Claims": "@items('Apply_to_each')?['Approver_x0020_email']" } ]' of type 'Array' must be a primitive type, or a valid template language expression.'.

The workflow itself is pretty simple:

 

appenderror.jpg

Any thoughts?

1 ACCEPTED SOLUTION

Accepted Solutions

The 'Append to array variable' must be inside the 'Apply to each 2', in the same way as on my screenshot. And the expression must be exactly like this:

item()?['Email']


[ If I have answered your question, please Accept the post as a solution. ]
[ If you like my response, please give it a Thumbs Up. ]

[ I also blog about Power Automate solutions even for non-IT people. ]

View solution in original post

28 REPLIES 28
tom_riha
Super User II
Super User II

Hello @smorley ,

remove the [ and ] brackets from the 'Append to array variable' value. [ ] brackets define an array, Power Automate thinks you want to add an array into another array. But you want to add only the value inside the { } (including the brackets) into an array, I guess you're trying to achieve this:

[
   { "Claims": "user1@company.com" },
   { "Claims": "user2@company.com" }
]

You could achieve the same result also with the 'Select' action instead of 'Apply to each' + 'Append to an array variable'.image.png

 



[ If I have answered your question, please Accept the post as a solution. ]
[ If you like my response, please give it a Thumbs Up. ]

[ I also blog about Power Automate solutions even for non-IT people. ]

Thanks @Tom the error went away, but now when I run the flow, it skips over the append action.  skiparray.jpg

My append syntax is:

{
"Claims": @{items('Apply_to_each_2')?['Approver_x0020_email']}
}

smorley
Helper V
Helper V

@tom_riha Sorry to be a pest.  I tried the select statement, but I've never used it before.  When I try it, it wraps inside an apply to each action.

In any case.  I'm going to explain my workflow and what I'm trying to solve.

 

A person fills out a form, and I want to populate the approver people picker field with a workflow, which comes from a second list that has the approver information.  It could also be from a SP group, I'm not fussy at this point.

Hello @smorley ,

when you lookup the other list using 'Get items', it'll always return an array = it'll always add 'Apply to each'. If it returns just 1 item it's not a problem as it'll loop only once through that 1 item.

Then the 'Select' action works in a way that you'll input an array = multiple choice people picker, and select from all the available information on the email address. The full content of a multiple people picker column will look like this:

[
    {
        "@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser",
        "Claims": "i:0#.f|membership|user1@company.com",
        "DisplayName": "User One",
        "Email": "user1@company.com",
        "Picture": "https://..."
    },
    {
        "@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser",
        "Claims": "i:0#.f|membership|user2@company.com",
        "DisplayName": "User Two",
        "Email": "user2@company.com",
        "Picture": "https://..."
    }
],

With the 'Select' action you can take that array, and tell the flow to return only a specific property from that array. You define the 'key' = Claims and the value you want to assign to that key in the result = Approver Email.



[ If I have answered your question, please Accept the post as a solution. ]
[ If you like my response, please give it a Thumbs Up. ]

[ I also blog about Power Automate solutions even for non-IT people. ]
smorley
Helper V
Helper V

@tom_riha I now have this in my select statement

selectsyntax.jpg

From is the SP field Approver Name which is a people picker field, and the Map is using the field Approver Email.  

(Which I think is my problem.)

My update item keeps giving an error when I put the output from the select statement in the Approver Claims field.updateitem.jpg

 

Try to switch to the text editor in the 'Approver Claims' field and use the variable there.

image.png

 



[ If I have answered your question, please Accept the post as a solution. ]
[ If you like my response, please give it a Thumbs Up. ]

[ I also blog about Power Automate solutions even for non-IT people. ]
smorley
Helper V
Helper V

I'm thinking I'm close but not yet.

approverclaims.jpg

'Current item' is connected to an 'Apply to each' action, it can't be used outside of 'Apply to each' as it references the item from the array you currently process. In the 'Update item' you should use either the output from the 'Select' action, or, if you can't access the output from the 'Select' action outside of the 'Apply to each', initialize an array variable at the beginning of the flow and store the output from the 'Select' into the variable (within the 'Apply to each').

Then use that array variable in the 'Update item' action.



[ If I have answered your question, please Accept the post as a solution. ]
[ If you like my response, please give it a Thumbs Up. ]

[ I also blog about Power Automate solutions even for non-IT people. ]
smorley
Helper V
Helper V

Here is my select statement.

From is Approver_x0020_Name

Map: enter key is blank;  the SP is Appover_x0020_Name_Email

Is this correct?

selectstatement.jpg

If not, should it be this:

selectstatement2.jpg

If it's not quite correct should it be "Approver Name Claims" here?

 

Sorry for being dense.

I think we're getting lost here with the 'Select' action and it'll be easier if you go back to the original solution with the 'Append to array variable' action. Just remove the [ and ] and then update the 'Approver' column using that array variable.

 



[ If I have answered your question, please Accept the post as a solution. ]
[ If you like my response, please give it a Thumbs Up. ]

[ I also blog about Power Automate solutions even for non-IT people. ]

I do tend to spin my wheels.

It saved this time.  So that's great.  When the flow runs, it's giving an error that the person cannot be found.

specifieduser.jpg

It looks you're appending the whole person column in the variable, you should append only the user email.

{
  "Claims": [UserEmailDynamicContent]
}


[ If I have answered your question, please Accept the post as a solution. ]
[ If you like my response, please give it a Thumbs Up. ]

[ I also blog about Power Automate solutions even for non-IT people. ]

Ok no error this time.  Here's the approver input from the flow run:

approverinput.jpg

But the output is empty.

approveroutput.jpg

Try to add a 'Compose' action before the 'Update item' and store the dynamic content/variable you use to update the 'Approver' there. Run the flow and check the 'Compose' action in the run history. It must have the same format as below, if it looks different then it's not correct.

[
  {
    "Claims": "xxx@tomriha.com"
  },
  {
    "Claims": "yyyy@tomriha.com"
  }
]

image.png 



[ If I have answered your question, please Accept the post as a solution. ]
[ If you like my response, please give it a Thumbs Up. ]

[ I also blog about Power Automate solutions even for non-IT people. ]

Ok, early bird.  The compose looks good.

compose.jpg

Getting a 400 error user not found.  Syntax I think.

updateitemerror.jpg

The input looks good, did you switch the field to 'input entire array'?

image.png



[ If I have answered your question, please Accept the post as a solution. ]
[ If you like my response, please give it a Thumbs Up. ]

[ I also blog about Power Automate solutions even for non-IT people. ]
smorley
Helper V
Helper V

Here's the append:

append.jpg

Here's the update.  It doesn't give me the option any more, and it also doesn't give me the dynamic choice of the variable any longer, just the compose.

update.jpg

Is the 'Approver Name' a people picker with multiple choices enabled? Try to delete the action and add it again, without the possibility to switch the field to 'input entire array' you'll not be able to update it.



[ If I have answered your question, please Accept the post as a solution. ]
[ If you like my response, please give it a Thumbs Up. ]

[ I also blog about Power Automate solutions even for non-IT people. ]

You are a very patient one!

I decided to stitch it all together for you.

workflow.jpg

The error message on running in the body of the Output is:

The specified user [{"@odata.type":"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser","Claims":"i:0#.f|membership|jn768544@dal.ca","DisplayName":"JoAnne Burke","Email":"JoAnne.Burke@Dal.Ca","Picture":"https://dalu.sharepoint.com/sites/dmnb/_layouts/15/UserPhoto.aspx?Size=L&AccountName=JoAnne.Burke@Da... Education Program - NB","JobTitle":null},{"@odata.type":"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser","Claims":"i:0#.f|membership|smorley@dal.ca","DisplayName":"Steve Morley","Email":"Stephen.Morley@Dal.Ca","Picture":"https://dalu.sharepoint.com/sites/dmnb/_layouts/15/UserPhoto.aspx?Size=L&AccountName=Stephen.Morley@... - Computing & Media Svcs","JobTitle":null}] could not be found.
clientRequestId: c7785c02-4426-4b37-a592-3284af8dbaf4
serviceRequestId: c7785c02-4426-4b37-a592-3284af8dbaf4

Helpful resources

Announcements
MPA_User Group Leader_768x460.jpg

Manage your user group events

Check out the News & Announcements to learn more.

V3_PVA CAmpaign Carousel.png

Community Challenge - Giveaways!

Participate in the Power Virtual Agents Community Challenge

Carousel 2021 Release Wave 2 Plan 768x460.jpg

2021 Release Wave 2 Plan

Power Platform release plan for the 2021 release wave 2 describes all new features releasing from October 2021 through March 2022.

R2 (Green) 768 x 460px.png

Microsoft Dynamics 365 & Power Platform User Professionals

DynamicsCon is a FREE, 4 half-day virtual learning experience for 11,000+ Microsoft Business Application users and professionals.

Top Solution Authors
Users online (2,580)