以下のブログエントリのコードを使用して、ユーザークエリを別のユーザーに再割り当てしています。データベースでDBUpdateステートメントを実行しました(以下のブログに示されています)。
http://mscrmblogger.com/2009/02/04/crm-4-userquery-privileges-for-system-administrators/
これが私のコードです:
CrmAuthenticationToken token = new CrmAuthenticationToken();
token.AuthenticationType = AuthenticationType.AD;
token.OrganizationName = Request.Params["orgname"];
CrmService crmService = new CrmService();
crmService.Url = ConfigurationManager.AppSettings["WebServiceUrl"];
crmService.CrmAuthenticationTokenValue = token;
crmService.PreAuthenticate = true;
crmService.UseDefaultCredentials = false;
crmService.Credentials = new NetworkCredentials(username, password, domain);
SecurityPrincipal newowner = new SecurityPrincipal();
newowner.Type = SecurityPrincipalType.User;
newowner.PrincipalId = new Guid(userid);
TargetOwnedUserQuery query = new TargetOwnedUserQuery();
query.EntityId = new Guid(queryid);
AssignRequest assign = new AssignRequest();
assign.Assignee = newowner;
assign.Target = query;
AssignResponse assignResponse = (AssignResponse)crmService.Execute(assign);
このコードを実行すると、crmService.Execute()で以下の例外が発生します。
SOAP Exception
Message: Server was unable to process request
Inner Detail: 0x8000404ff Cannot assign Offline Filters Platform
いくつかのユーザークエリに対してこれを実行すると、わずかに異なるいくつかの例外が発生します。ユーザークエリの大部分は、上記の上記/最初の例外を返します。これらの異なるSOAP例外を返すものもあります。
2) Inner Detail: 0x80048448 Cannot assign address book filters Platform
3) Inner Detail: 0x80040264 Cannot assign Outlook Filters Platform
私の知る限り、CRM製品でオフラインフィルターを使用していません。また、Outlookの統合に関連するものは何も使用していません。
カスタムASPXページは、CRMと同じサーバーで、ISVフォルダー内でホストされます。認証、サイトマップのカスタマイズ、および(一見)他のすべての部分が正しく機能して、これをカスタムページとして統合しています。
これをトラブルシューティングする方法に関するヒントはありますか?
ありがとう
UserQueryIDを取得するためのクエリ、@SystemUserIdはユーザーの入力されたドロップダウンボックスを介して渡されます
SELECT [Name], [UserQueryId]
FROM [UserQueryBase]
WHERE [OwningUser] = @SystemUserId
ORDER BY [Name]