web
You’re offline. This is a read only version of the page.
close
Skip to main content

Announcements

News and Announcements icon
Community site session details

Community site session details

Session Id :
Power Platform Community / Forums / Copilot Studio / Copilot Studio Issue w...
Copilot Studio
Answered

Copilot Studio Issue with respect to Lists.

(1) ShareShare
ReportReport
Posted on by 143
So I am doing is storing a custom table in a list variable.

Scenario:
What I am doing is this , Loop through this 'Input List' variable and find those items that have value empty. Store these items in the Missing List. Use Items of MissingList to generate dynamic questions by sending them to a Generative answer node. Asking those questions and then storing those answer in someway back in the Input list variable's Respective Keys.
What I did :
I got all values in the Input List from the JSON using
With(
{obj:Topic.ResponseJSON},
Table(
{Key:"A", Value:obj.X},
{Key:"B", Value:obj.Y},
{Key:"C", Value:obj.Z}
)
)
I filtered only missing value inside the 'Missing List' using below fx formula -
With(
{obj:Topic.ResponseJSON},
Filter(
Table(
{Key:"A", Value:obj.X},
{Key:"B", Value:obj.Y},
{Key:"C", Value:obj.Z}
),IsBlank(Value))
)
Now I have two list variables 'Input List' and 'Missing List'
Now what I did next is shown in the image.
Problem is that the Question Node is never invoked. Even though I have altered the property to 'Ask Everytime'.
Screenshot 2026-04-15 162434.png
Screenshot 2026-04-15 162619.png
Screenshot 2026-04-15 162707.png
I have the same question (0)
  • P1999 Profile Picture
    143 on at
    @Valantis , help me solve this. 
  • Suggested answer
    Valantis Profile Picture
    3,406 on at
    Hi @P1999,
     
    The core problem here is a known Copilot Studio limitation Question nodes inside a Loop through a list node don't work reliably for multi-turn conversations.
    The loop is designed for data processing, not for pausing execution to wait for user input on each iteration. This is why the Question node is never invoked regardless of the Ask Every Time setting.
     
    Microsoft's own docs confirm this and recommend a different pattern: use a parent topic that manages the loop logic and a child topic that handles the conversation turn (asking the question and collecting the answer), then redirect between them.
     
    try this for your scenario:
     
    1. Keep your current logic to build MissingList and InputList as global variables
    2. Instead of looping and asking questions inside the same topic, create a child topic called something like AskMissingField
       - Input: the current field key/prompt
       - Output: the user's answer
       - Inside this topic: show the generated question (from BotPrompt), ask the Question node, return the answer
    3. In your main topic, instead of a Loop node with a Question inside:
       - Use a counter variable (e.g. Global.CurrentIndex starting at 0)
       - Redirect to AskMissingField passing MissingList[CurrentIndex]
       - When AskMissingField returns, update InputList with the answer
       - Increment the counter
       - Use a Condition to check if CurrentIndex < CountRows(MissingList), if yes redirect back to AskMissingField, if no proceed
     
    This recursive redirect pattern reliably resets conversation state between each question and avoids the loop limitation.
     
    Also one thing I noticed from your screenshots  the Create Generative Answers node has Activity.Text as input, which means it uses the user's current message. At the point where BotPrompt is being set inside the loop there is no new user message, so that node may be generating answers from stale input. The generative answers node should receive BotPrompt as input, not Activity.Text.
     
     

     

    Best regards,

    Valantis

     

    ✅ If this helped solve your issue, please Accept as Solution so others can find it quickly.

    ❤️ If it didn’t fully solve it but was still useful, please click “Yes” on “Was this reply helpful?” or leave a Like :).

    🏷️ For follow-ups  @Valantis.

    📝 https://valantisond365.com/

     

  • P1999 Profile Picture
    143 on at
    @Valantis I tried using this method. Even after I used a child flow. Still it did not work.
     
    I tried it this way but did not work. It skipped 'Create Generative Answers' node always.  
    1. Set Variable called Counter's value to 0
    2. Use List Loop
    3. In the list , called the child topic with Key as input
    In the child topic
    1. Created a BotPrompt variable with the Topic.Missing.Key
    2. Used the Botprompt as an input  in the  'Create Generative Answers' node
    3. Used the response in the Question node directly
    4. .
    5. .
    6. Same process
    7. In the end , used a Set Variable action to set the variable to Variable + 1
    8. For the output variable , it was not needed , I added UserAnswer it into the InputList directly in the child flow. 
     
    Finally what I did was remove the 'Create Generative Answers' node completely and created a list of questions and used the shuffle function for making it dynamic. 
     
     
                        
     
     
     
     
  • Verified answer
    Valantis Profile Picture
    3,406 on at
    Hi @P1999,
     
    Thanks for the update. Your shuffled question list workaround is actually the right call here and here is why the Generative Answers node kept skipping regardless of what we tried.

    The Create Generative Answers node internally depends on Activity.Text as a live user utterance to generate a relevant answer. When a topic is reached via a redirect there is no new user message coming in, so Activity.Text is stale or empty at that point. The node sees no valid input and skips. Passing BotPrompt as a variable does not replace this because the node still needs a live utterance as its grounding context. This is a platform-level limitation of that specific node and would have failed even with the correct counter pattern.

    If you ever want to go back to truly dynamic AI-generated questions in the future without the hardcoded list, the right tool for this is a Prompt action (AI Builder custom prompt) instead of the Generative Answers node. A Prompt action accepts a variable directly as input, does not depend on Activity.Text, and can generate a question based on the field key. It works correctly inside the counter redirect pattern.

    But for your current use case the shuffled list is clean, reliable and uses no AI credits. Good solution.
     

     

    Best regards,

    Valantis

     

    ✅ If this helped solve your issue, please Accept as Solution so others can find it quickly.

    ❤️ If it didn’t fully solve it but was still useful, please click “Yes” on “Was this reply helpful?” or leave a Like :).

    🏷️ For follow-ups  @Valantis.

    📝 https://valantisond365.com/

     

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

Introducing the 2026 Season 1 community Super Users

Congratulations to our 2026 Super Users!

Kudos to our 2025 Community Spotlight Honorees

Congratulations to our 2025 community superstars!

Congratulations to the March Top 10 Community Leaders!

These are the community rock stars!

Leaderboard > Copilot Studio

#1
Valantis Profile Picture

Valantis 618

#2
Haque Profile Picture

Haque 147

#3
Vish WR Profile Picture

Vish WR 140

Last 30 days Overall leaderboard