OrganizationServiceProxy的CallerId

时间:2019-03-24 14:25:08

标签: c# asp.net dynamics-crm

我正在做一个外部服务,它将在Dynamics 365的 Order 实体中创建一条记录,其中的默认字段(例如:创建者和一些默认字段)将以想要创建。

为此,我尝试使用 OrganizationServiceProxy 类的 CallerId 属性。我由实际上想要创建记录的CRM用户设置Call​​erId属性。但是,只有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 个答案:

答案 0 :(得分:1)

验证分配给该“普通用户”的任何安全角色是否具有“销售”选项卡下“订单”实体(销售订单)的最低用户级别(橙色饼图)授予的创建特权。我想不是。

赋予该特权并验证相同的代码执行。

enter image description here

答案 1 :(得分:0)

只要您设置为CallerId的用户具有销售经理安全角色,您的代码就可以正常工作。与您登录的用户还必须至少具有 Sales Manager 安全角色和代表其他用户采取行动特权,该特权可以在“业务管理”选项卡下找到。 / p>