1

We have enabled the Enhanced Notes in our Instance and added the related list in to the page layout. When our users add a note using the enhanced notes other users can only view them and cannot edit them. By default the permission on the note is set to Read only for the other users

enter image description here

Is there some setting that we need to enable to have our users edit the notes. We tried sharing the notes even then the default role we see when sharing is the Viewer. Any help is greatly appreciated

2 Answers 2

2

"When sharing a note in Lightning Experience, you can provide Viewer access only. There is no Collaborator access. Notes doesn’t support simultaneous editing, and this restriction prevents multiple people from editing a note at the same time. If multiple people change a note at the same time, they overwrite each other’s changes."

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

However there is a workaround - each enhanced note is stored in ContentNote. We can query it and open in classic by pasting the Id in URL and then add users as Collaborator. Now added user can edit this enhanced note.

  1. I created an enhanced note with name "Test Note".
  2. Queried it dev console [SELECT Id FROM ContentNote WHERE Title ='Test Note']. Got the record id.
  3. Switched back to Classic and then pasted in url - it opens up the content note in classic
  4. Added target user as collaborator using sharing setting button.
  5. Logged in as Target user and now able to edit note even in Lightning experience

This is just a POC, we need to find out some way to reach the content note without querying record for general user - a button or a link.

1
0

You can create a trigger on ContentDocumentLink to control the level of sharing on the note.

So if before insert you set the ContentDocumentLink.ShareType = 'I', you've set this note to be editable by whomever has edit permissions on the related record (LinkedEntityId).

Here's a sample trigger, inspired by the trigger example at the bottom of the official ContentDocumentLink docs:

trigger ContentDocumentLinkTrigger on Case (before insert) {
    List<ContentDocumentLink> cdls = [SELECT Id, LinkedEntityId, ContentDocument.FileType
                                        FROM ContentDocumentLink
                                       WHERE ContentDocumentId in :Trigger.newMap.keys() AND ContentDocument.FileType = 'SNOTE'];
    for (ContentDocumentLink snoteCdl : cdls) {
        snoteCdl.ShareType = 'I';
    }
}

See those official docs for all the different ShareType values. C for Collaborator will open up edit rights to even more users.

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.