2

We have moved all our Notes and Attachment to FIles in lightning, Now none of our Community plus users are able to view the files from their community login. We have added files related list on page layout but it isn't showing up. We have also made sure their profile has access to files. What is more strange to see is, If community users go to files tab and search for any existing file they can find it from the files tab but not on the record. I tried comparing one of the files, and from my login, I can see the file is Shared with a record but the same file from community user login doesn't show any record it is shared with. Anyone else facing this issue? We have more than 700+ community users who are finding files missing from the records which technically isn't true.

3

this is because you have Visibility as InternalUsers on ContentDocumentLink for each ContentDocument record, that represents lightning Files.

In order, to grant visibility access for Community users, you have to update Visibility to AllUsers for those files that should be visible to community users.

  • AllUsers—The file is available to all users who have permission to see the file.
  • InternalUsers—The file is available only to internal users who have permission to see the file.

Code to update all ContentDocumentLink records. If you don't have to do it for all Files, select only filtered records:

List<ContentDocumentLink> toUpdate = new List<ContentDocumentLink>();
for(ContentDocumentLink link : [
    select Id, Visibility
    from ContentDocumentLink
    where Visibility != 'AllUsers'
    ]){
    link.Visibility = 'AllUsers';
    toUpdate.add(link);
}
update toUpdate;
8
  • Thanks for responding, I'm non dev and dont have much knowledge about the code, Do i just copy the code and paste it as it is? I just tried updating the same code and got an error as "Unexpected token 'List'." Can you please assist. This has affected our more than 700+ community users. – Mohammed Siddique Nov 18 '18 at 22:06
  • @MohammedSiddique where are you trying to perform this code snippet? in antonymous apex? – Oleksandr Berehovskyi Nov 19 '18 at 6:05
  • I refreshed our Dev Sandbox and then in Sandbox>Developer Console>New>ApexTrigger>I have selected sObject as "ContentDocumentLink" and pasted the above code and it gave me the error message as "Unexpected token 'List'." Not sure if I'm doing anything incorrectly. – Mohammed Siddique Nov 19 '18 at 13:12
  • @MohammedSiddique no, you have to run that code in anonymous apex – Oleksandr Berehovskyi Nov 20 '18 at 7:10
  • I just run this code from Dev Console> Debug>Open Execute Anonymous Window and paste the Code as it is updated when i execute it gave me error as "Line: 2, Column: 32 Implementation restriction: ContentDocumentLink requires a filter by a single Id on ContentDocumentId or LinkedEntityId using the equals operator or multiple Id's using the IN operator." – Mohammed Siddique Nov 21 '18 at 20:02
0

Without the right code, Salesforce user can share Notes and Attachment with community user below links just follow the below setting.

https://help.salesforce.com/articleView?id=networks_files_on_records_visible_to_customers.htm&type=5

1
  • Can you post the relevant information here? It's been fagged as link-only answers tend to break over time. – Matt Lacey Jul 16 '20 at 5:16
0

By default files object created under related list will follow this behavior . In short , files will not be accessible by Community user license ( External users) but only Standard user license (Internal Users ) because those file visibility properties value was set as "InternalUsers" on SFDC database level

To escape from this problem , like your case you want to allow community user see file in related list . You need do 2 thing.

First , on Developer console screen , Use APEX trigger to make sure new inserted file will always visible to "All users" , here is the code.

trigger ContentDocumentLinkTrigger on ContentDocumentLink (before insert) 
{
    //This trigger will make all new inserted files visible to Community Users
    for(ContentDocumentLink l:Trigger.new) {
        l.Visibility='AllUsers';
    }
}

Then , find a way to mass reset old database value , and i think Oleksandr Berehovskyi had answered that

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.