how to Handle GetClones Reset After Navigation in Pega RPA

From the table, I retrieve data using GetClones and a ListLoop. I search a set of customers; when I find the first one, I click the link in the table, update the details, and complete that record. After that, the ListLoop stops working because the GetClones objects are lost after navigation, and I get a ‘Component not listed’ error in Pega RPA

@narendranathanv

Here’s the thing: after you click a row and the page navigates, every clone you got from GetClones is destroyed, so the old ListLoop items are invalid and you see Component not listed. The fix is to never reuse clones across navigation when you return to the results page, first WaitForCreate on the table (and optionally check IsCreated/Ready), then call GetClones again to build a fresh list. Re-initialize the ListLoop on this new list (Initialize/Reset) before continuing. If you want to continue where you left off, save the current row index or a unique customer ID before you click, then skip already-processed items after you rebuild the list. Turn on UseKeys for the row/link controls and add a stable match rule (like customer ID text in the row) so the control rematches cleanly after navigation. Wrap the click in try/catch; on Component not listed, perform a quick rematch sequence: WaitForCreate(table) → GetClones → ListLoop.Initialize, then retry. Add short waits after submit/return so you don’t read a half-rendered table. Best practice: first collect all customer IDs into a simple string collection, iterate that list, and open each record by ID—this avoids depending on fragile clones altogether.

@narendranathanvI will expand upon what the other response was a bit. GetClones returns a list of the currently matched objects. Once you click on one of those objects, your page navigates presumably destroying your collection of clones. Like any iteration, once you’ve changed your list of items you’re iterating, it is no longer valid. The secret here is to iterate a different list: specifically, one that does not change.

To do this, I would first construct a WaitForClones automation. This automation will use a WhileLoop to check the count of the clone collection periodically until it becomes stable. This is necessary because you can’t really use a WaitForCreate on a clone collection since there isn’t really an event that happens that indicates that all clones have been added to the page. In most cases, all the clones are added at the load of the page though, so this technique works well. I am attaching a screenshot, but the idea is that you grab a count of the clones initially and then pause for a brief period and check the count again. If it has changed, you return to the loop to pause and then check again. Once it has stabilized, then you can break the loop knowing that all clones have been matched. You would use this automation in place of a WaitForCreate for the clone collection both the first time you navigate to the page and when you return to it from clicking on each clone.

The first time you navigate to the page with the clones you need to iterate, you would then construct a list of the items you wish to click on. You’d need to record something about them that does not change (perhaps the account number, or maybe an index attribute you can extract from each clone). Once you have this list, add these to a Lookup Table as this will serve as your list for iteration since it won’t change.

Next, you would write an automation that finds that specific item from your list in the list of clones. This automation would return the key for the clone based on whatever values you’ve input to it. They key will change whenever that clone gets matched, so it needs to be something you acquire when you need it rather than being stored.

Let me know if this makes sense, or if you need more clarification.