none
SDKにてセキュリティロールを設定したい。 RRS feed

  • 質問

  • 以下のコードで”ロール1”のセキュリティロールを設定しようとしたところ

    serviceProxy.Execute(associate);

    の箇所で

    The user belongs to a different business unit than the role.

    とエラーが表示されてしまいます。

    userIdには該当ユーザのGUIDが取得されていることは確認できて

    おり、ロール1というセキュリティロールはすでに登録されていますが、

    以下コードの※1にて取得したロールのGUIDは、ユーザが設定して

    いるGUIDとは異なっているようです。

    (画面からユーザに紐づくセキュリティロールを確認してタイトルバーに

    記載されたGUIDとは異なる)

    何か解決方法わかれば教えていただきたく思います。

      //※1ロールIDを取得

    Role role = RetrieveRoleByName(serviceProxy, "ロール1"); if (!UserInRole(serviceProxy, userId, role.Id)) { AssociateRequest associate = new AssociateRequest() { Target = new EntityReference(SystemUser.EntityLogicalName, userId), RelatedEntities = new EntityReferenceCollection() { new EntityReference(Role.EntityLogicalName, role.Id) }, Relationship = new Relationship("systemuserroles_association") }; serviceProxy.Execute(associate); }


    2012年12月11日 7:34

回答

  • こんにちは

    DCRMでは、ロールは部署ごとにコピーして作成されます。例えば、親部署A, 子部署AA があった場合、 Aでセキュリティロールを作成すると、同じ名前のセキュリティロールが下位部署(ここではAA)に作成されます。

    つまり、ユーザーに付与すべきセキュリティロールは 部署に紐づいています。ユーザーにロールを付与する場合、ユーザーの所属する部署のセキュリティロールのGUIDを取得する必要があります。

    具体的には、 role エンティティのフィールド businessunitid と name で検索する必要があります。

    • 回答としてマーク sg12 2012年12月13日 6:42
    2012年12月11日 12:32

すべての返信

  • こんにちは

    DCRMでは、ロールは部署ごとにコピーして作成されます。例えば、親部署A, 子部署AA があった場合、 Aでセキュリティロールを作成すると、同じ名前のセキュリティロールが下位部署(ここではAA)に作成されます。

    つまり、ユーザーに付与すべきセキュリティロールは 部署に紐づいています。ユーザーにロールを付与する場合、ユーザーの所属する部署のセキュリティロールのGUIDを取得する必要があります。

    具体的には、 role エンティティのフィールド businessunitid と name で検索する必要があります。

    • 回答としてマーク sg12 2012年12月13日 6:42
    2012年12月11日 12:32
  • handcraft様

    ありがとうございます。なんでこの質問が理解できるのかも不思議で感動しているのですが、何ヶ月も悩んでいtので感動しています。

    大手SIベンダーからシステムを納品されたものの日々のユーザ登録は手動でやらないといけないと聞かされており、私はプログラムもシステムのことも全くわからないのですが、できれば自動化したいと思っており独学で勉強しております。

    この後、チームの割り当てもありますが、うまく行かないときはご協力いただけると助かります。MVPって本当にすごいのですね。。。

    • 回答としてマーク sg12 2012年12月13日 6:42
    • 回答としてマークされていない sg12 2012年12月13日 6:42
    2012年12月11日 15:44