Если бы мне пришлось реализовать такой сценарий, я бы создал запись доступа клиента (new_custaccess), которая связана с записью клиента (new_customer).Для этого примера - оставаясь простым - я собираюсь предположить, что у клиента есть простой код доступа, который он должен предоставить, прежде чем сотрудник банка (Оператор) сможет получить доступ к записи.Код доступа хранится в new_custaccess в поле (new_secretcode).
Безопасность заключается в том, что Оператор не имеет привилегий для new_customer и привилегий чтения / обновления для new_custaccess.
В new_custaccess есть одно поле (new_secretcodeoperator), которое оператор может обновить.Все остальные поля запрещены для обновления (и, при необходимости, чтения) для Оператора.
Когда Клиент звонит, и Оператор ищет соответствующую запись new_custaccess.Как только они находят запись, они вводят предоставленный Заказчиком секретный код в поле new_secretcode и делают сохранение.
Запрос Pre-Update выполняется для new_custaccess в контексте пользователя с полными привилегиями (назовите его MASTER, дляздесь весело.) Этот плагин проверяет, соответствует ли предоставленный код секретному коду.Если этого не произойдет, выдается ошибка, и оператор может повторить попытку.Если он совпадает, плагин удаляет поле new_secretcodeoperator из записи, чтобы сохранить его от сохранения значения.Он также передает соответствующее разрешение на запись new_customer соответствующему оператору.
Оператор теперь имеет доступ к записи клиента (вам нужно будет решить, каскадировать разрешения или делиться для каждой записи - это решение выходит за рамкиэто обсуждение.)
Теперь нам нужно разобраться с отзывом разрешения на запись Клиента.Я бы справился с этим, имея сущность new_customeraccess, которая генерируется предыдущим плагином всякий раз, когда предоставляется доступ к записи о клиенте.Рабочий процесс должен запускаться при создании new_customeraccess, в результате которого new_customeraccess обновляется каждые 20 минут (или в любое другое время, которое предпочитает клиент.)
Плагин регистрируется при обновлении new_customeraccess, который запускается, когда поле обновляется рабочим процессом.модифицируется.Этот плагин будет определять - по любым критериям, выбранным бизнесом - продолжать ли совместное использование или отменять совместное использование.
Я бы также создал всплывающее окно на основе javascript / html с ленты new_customer, чтобы завершить совместное использование.обновив поле на new_customeraccess.Предоставьте оператору ограниченные права на обновление для new_customeraccess с помощью безопасности на уровне поля.
Это должно выполнить то, что вы хотите, не выходя за пределы стандартной модели настройки CRM.Не совсем уверен, где вы проведете линию на заказ, но это, вероятно, так близко, как вы доберетесь до OOTB.Несколько плагинов - это все, что вам нужно для C #.И единственный JavaScript будет для удобства использования, а не функциональности.
Дайте мне знать, если у вас есть вопросы.