You could use the good old GetBluePrintChain(BluePrintChainFilter filter) for this maybe? This gives you all child pages based on the current page you're processing. As a quick example: BluePrintChainFilter b = new BluePrintChainFilter(engine.GetSession()); b.Direction = BluePrintChainDirection.Down; foreach(RepositoryLocalObject r in page.GetBluePrintChain(b)) { log.Debug(r.WebDavUrl); }