After systematically checking all the suggestions, I found the root cause was a combination of three configuration gaps:
Issue 1: Record Type and Data Category Setup
The Customer_Facing_KB record type was correctly assigned to portal user profiles, but the data category group visibility was misconfigured. I went to Setup → Data Category Groups → Support_Categories and found that portal profiles only had visibility to the ‘All’ category, not the specific child categories (Product_Info, Troubleshooting).
Fixed by: Editing the category group visibility settings to explicitly grant portal profiles access to Product_Info and Troubleshooting categories with ‘Visible’ access level. The ‘All’ category alone doesn’t cascade visibility to children in Knowledge article context.
Issue 2: Field-Level Security for Custom Fields
The Solution_Steps__c field had ‘Hidden’ access for portal profiles, which was correct since we want portal users to see it. However, Internal_Notes__c field was also hidden but was marked as ‘Required’ on the Customer_Facing_KB page layout. This caused articles with empty Internal_Notes__c to fail validation when portal users queried them, resulting in those articles being excluded from results.
Fixed by: Changed Internal_Notes__c to optional on the Customer_Facing_KB layout and created a validation rule that only enforces it for Internal_KB record type:
AND(
RecordType.Name = 'Internal_KB',
ISBLANK(Internal_Notes__c)
)
This allows Customer_Facing_KB articles to have empty Internal_Notes__c without breaking portal queries.
Issue 3: Sharing Rules for Portal Users
Knowledge articles weren’t being shared with portal users through explicit sharing rules. The default sharing model for Knowledge is ‘Private’ which means only article owners and users with ‘Manage Articles’ permission can see them.
Fixed by: Created a Knowledge Article Sharing Rule (Setup → Sharing Settings → Knowledge Article Sharing Rules) with these criteria:
- Share records meeting criteria: RecordType = ‘Customer_Facing_KB’ AND PublishStatus = ‘Online’
- Share with: Portal Roles and Subordinates (Customer Community Users)
- Access Level: Read Only
This ensures all published Customer_Facing_KB articles are automatically visible to portal users regardless of ownership.
Additional Configuration:
- Verified portal profile has ‘Read’ permission on Knowledge__kav object
- Confirmed data category assignments are consistent between draft and published versions
- Updated portal user profile to include ‘View Published Articles’ permission under Knowledge User settings
After implementing all three fixes, portal users now have consistent access to the correct Knowledge articles. The key learning: Knowledge article visibility requires alignment across four layers (record type access, data category visibility, field-level security, and sharing rules) - a misconfiguration in any layer breaks the entire access chain for portal users.