The code below iterates subsites and finds a lists called TeamRequests in each site. At the moment it only displays the 1st item of the list. I'm trying to alter the code so it iterates all the items in TeamRequest so I can locate a particular item. In TeamRequests I have a column called AssignedTo, if this equals a value from an array (not defined in code yet) I want it to report a match. Any suggestion on how to do this pls? SP.SOD.executeOrDelayUntilScriptLoaded(function () { var myCtx = SP.ClientContext.get_current(); var root = myCtx.get_site().get_rootWeb(); // may need to do this if in a sub site var webs = root.get_webs(); // fetch a reference to all the sub webs var query = new SP.CamlQuery(); // only need to fetch the first item returned from each Project list //query.set_viewXml('<View Scope="RecursiveAll"><Query></Query><RowLimit>1</RowLimit></View>'); query.set_viewXml('<View Scope="RecursiveAll"><Query></Query></View>'); var queryItemCollections = []; // make sure to load the lists data so we can check // if the "Projects" list exists in each site myCtx.load(webs, "Include(Id, Lists)"); myCtx.executeQueryAsync(function () { // push new SP.ListItemCollections into an array and tell the ctx to fetch them console.log(webs.get_data().length); for (var i = 0; i < webs.get_data().length; i++) { var web = webs.get_data()[i], itms; if (checkForProjectsList(web)) { itms = webs.get_data()[i].get_lists() .getByTitle("TeamRequests").getItems(query); queryItemCollections.push(itms); myCtx.load(itms); } } myCtx.executeQueryAsync(function () { if (queryItemCollections.length == 0) { console.log("collection empty"); } queryItemCollections.forEach(function (item) { // do work with individual list items here console.log(item.getItemAtIndex(0).get_item("Title")); }); }, genericFailHandler); }, genericFailHandler); function checkForProjectsList(web) { var lists = web.get_lists().get_data(); for (var j = 0; j < lists.length; j++) { var list = lists[j]; if (list.get_title() == "TeamRequests") { return true; } } return false; } function genericFailHandler(sender, args) { console.log(args.get_message()); } }, "SP.js");