protected KBArticle getKBFolderKBArticle(long groupId, long kbFolderId, String kbFolderUrlTitle) throws PortalException { if (Validator.isNotNull(kbFolderUrlTitle)) { KBFolder kbFolder = KBFolderServiceUtil.fetchKBFolderByUrlTitle(groupId, kbFolderId, kbFolderUrlTitle); if (kbFolder != null) { kbFolderId = kbFolder.getKbFolderId(); } } List<KBArticle> kbArticles = KBArticleServiceUtil.getKBArticles( groupId, kbFolderId, WorkflowConstants.STATUS_APPROVED, 0, 1, new KBArticlePriorityComparator(true)); if (!kbArticles.isEmpty()) { return kbArticles.get(0); } List<KBFolder> kbFolders = KnowledgeBaseUtil.getAlternateRootKBFolders(groupId, kbFolderId); for (KBFolder kbFolder : kbFolders) { KBArticle kbArticle = getKBFolderKBArticle(groupId, kbFolder.getKbFolderId(), kbFolder.getUrlTitle()); if (kbArticle != null) { return kbArticle; } } return null; }