Резюме:

Организация 1 хочет иметь доступ к данным, хранящимся в организации 2. В большинстве случаев мы выяснили это с помощью межорганизационного адаптера Salesforce Connect.

Однако организация должна иметь доступ к Notes. Организация использует «Расширенные заметки», в которых используется объект ContentNote. Примечания связаны с другими записями, такими как учетные записи, контакты и т. д., через объект соединения ContentDocumentLink.

На данный момент я обнаружил, что с помощью ContentNote и ContentVersion вы можете экспортировать/запрашивать только те записи, которые явно предоставлены вам или принадлежат вам.

Проблема:

Проблема, с которой я сталкиваюсь, заключается в том, что при использовании адаптера Salesforce Connect для предоставления объекта ContentNote данные не передаются. Я считаю, что причина этого в том, что пользователь API не связан с сущностью/записью, к которой прикреплена заметка?

Мой тест:

Я выполнил запрос к общему объекту, используя следующее:

SELECT ... FROM ContentNote__x

Я получаю только строки, где пользователь API был тем, кто создал заметку. Я не могу просмотреть заметки, созданные другим пользователем.

При создании заметок есть текст «Видимость, установленная записью» (пример изображения прилагается), что наводит меня на мысль, что эту заметку могут просматривать только те, кто связан с контактом/партнером/интересом и т. д. каким-то образом, что заметка создается для. Это представляет проблему для меня.

enter image description here

Вопрос:

Есть ли обходной путь/хак, где я мог бы каким-то образом разрешить этому пользователю API, будь то через набор разрешений, роль и т. д., иметь доступ ко всем заметкам? Если нет прямого доступа к заметкам, как насчет того, чтобы каким-то образом связать пользователя с исходной записью, чтобы пользователь API каким-то образом был связан с контактом или лидом, для которого была создана эта заметка?

Ссылки на мои исследования:

https://douglascayers.com/2017/06/26/how-to-export-notes-from-salesforce/

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

https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_objects_contentdocumentlink.htm

2
SBB 3 Окт 2019 в 18:41
Есть ли у вас возможность поместить какой-либо триггер в org2, чтобы для каждой созданной заметки эта заметка явно делилась с пользователем API?
 – 
Kris Goncalves
3 Окт 2019 в 18:48
- Мне трудно даже найти, где я бы позволил этому пользователю API увидеть его вручную, если честно. Похоже, что доступ к просмотру наследуется людьми, у которых уже есть доступ к объекту, для которого была создана эта заметка (контакт, интерес и т. д.). Вы говорите, что если пользователь создает заметку в лиде, мне нужно связать пользователя API с лидом, если он был создан в контакте, пользователь API должен быть связан с контактом и т. д., чтобы они получили доступ изначально ? Я не вижу способа специально настроить доступ к просмотру заметок.
 – 
SBB
3 Окт 2019 в 18:54
Я был плюнул, но это было первое, что пришло в голову, чтобы по существу всегда создавать ссылку на контент-документ для пользователя API, чтобы у него был доступ. Сам я этого не делал и не проверял. Может быть полезно просто запросить ContentDocumentLink одного примера в рабочей среде, чтобы узнать, какие параметры ShareType и Visibility.
 – 
Kris Goncalves
3 Окт 2019 в 19:13

1 ответ

В Spring 19 есть возможность запросить все файлы (примечания и вложения). Пожалуйста, выполните следующие шаги, чтобы включить разрешение для пользователя.

Создайте набор разрешений.

В разделе «Разрешения» перейдите в «Разрешение приложения» -> «Контент». В разделе «Содержимое» вы можете увидеть параметр «Запросить все файлы». Проверьте поле и сохраните набор разрешений.

После этого вы можете добавить набор разрешений для связанного пользователя.

Я попробовал приведенный ниже запрос для целей тестирования, и я могу запросить все записи из отдела продаж.

Выберите Id, LinkedEntityId, LinkedEntity.name, ContentDocumentId, ContentDocument.LatestPublishedVersion.TextPreview, ContentDocument.title, ContentDocument.fileextension из ContentDocumentLink WHERE LinkedEntityId в (SELECT Id FROM Contact) и ContentDocument.LatestPublishedVersion.TextPreview != ''

1
KSL 11 Окт 2019 в 21:03
Я попробую это первым делом завтра, когда я попаду в офис и отчитаюсь. Судя по вашему объяснению, это звучит многообещающе! Пока это все файлы и документы, созданные кем-либо, а не только связанные с пользователем, к которому применяется этот набор разрешений, тогда все будет идеально.
 – 
SBB
13 Окт 2019 в 23:09
Вышеупомянутый запрос уже находится в первой ссылке, используемой OP, упомянутой как Существует обходной путь, и он заключается в запросе записи ContentDocumentLink. И кажется, что это не зависит от набора разрешений.
 – 
Saroj Bera
14 Окт 2019 в 15:50