CallerId для OrganizationServiceProxy - PullRequest
2 голосов
/ 24 марта 2019

Я создаю внешнюю службу, которая создаст запись в Заказ Сущность Dynamics 365 с полем по умолчанию (например, созданным и некоторыми полями по умолчанию) будет названа в честь пользователя, который хочет создать ,

Для этого я попытался использовать свойство CallerId в классе OrganizationServiceProxy . Я устанавливаю свойство CallerId пользователем CRM, который на самом деле хочет создать запись. Но я могу создать запись, только если у пользователя crm системный администратор роль.

Для лучшего понимания добавлен некоторый блок кода:

public void Get(Guid userId)
{
    var proxy = new OrganizationServiceProxy(new Uri(c.ServiceUri), null, crmCredentials, null);
    proxy.EnableProxyTypes();
    var context = new OrganizationContext(proxy);

    // now setting caller id
    proxy.CallerId = userId;

    // generating order entity
    var t = new SalesOrder();
    t.Name = "Demo";
    .....
    ...
    .

    context.AddObject(t);
    context.SaveChanges(); // getting exceptions for normal user on save changes
}

Теперь мой вопрос состоит в том, как преодолеть исключение, если пользователь crm не имеет привилегий с ролью Системный администратор .

Ответы [ 2 ]

1 голос
/ 25 марта 2019

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

Дайте эту привилегию и проверьте выполнение того же кода.

enter image description here

0 голосов
/ 24 марта 2019

Ваш код работает нормально до тех пор, пока пользователь, которого вы устанавливаете в качестве CallerId, имеет Менеджер по продажам Роль безопасности. Пользователь, с которым вы входите в систему, должен также иметь как минимум Sales Manager Роль безопасности и Действовать от имени другого пользователя , которую можно найти на вкладке "Управление бизнесом".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...