locked
Assign created Quote to another user - Web Services - C# - CRM 4.0 RRS feed

  • Question

  • Greetings!

    My web application creates and activates quotes in Microsoft CRM and then send these quotes to customers. The problem I have right now is that to be able to do all this (create and activate) I need to be impersonated as the Administrator in CRM, and the quotes that are created and activated from my web application are being sent to the customer with the CRM system user credentials, which are the admin credentials ... not cool!

    I would like to know how can I assign an already created quote in CRM to another user thorugh the CRM web service or other method. I know that this can be done manually in CRM.

    I'm using C# and my code behind language and I'm using CRM 4.0 

    Any articles, ideas would be greatly appreciated.

    Thank you,

    Eduardo
    Eduardo
    Tuesday, May 19, 2009 3:21 PM

Answers

  • this code is straight from the SDK and shows how to assign a record:
    // Set up the CRM service.
    CrmAuthenticationToken token = new CrmAuthenticationToken();
    // You can use enums.cs from the SDK\Helpers folder to get the enumeration for Active Directory authentication.
    token.AuthenticationType = 0; 
    token.OrganizationName = "AdventureWorksCycle";
     
    CrmService service = new CrmService();
    service.Url = "http://<servername>:<port>/mscrmservices/2007/crmservice.asmx";
    service.CrmAuthenticationTokenValue = token;
    service.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
    // Create the SecurityPrincipal object.
    SecurityPrincipal assignee = new SecurityPrincipal();
    assignee.Type = SecurityPrincipalType.User;
    
    // PrincipalId is some known Guid belonging to the user or team that will own this record.
    assignee.PrincipalId = new Guid("326A0053-71CB-465E-9BEB-633E2E0851A9");
    
    // Create the target object for the request.
    TargetOwnedQuote target = new TargetOwnedQuote();
    
    // Set the properties of the target object.
    // EntityId is some known Guid belonging to the account that is being assigned to the user.
    target.EntityId = new Guid("2B951FBC-1C56-4430-B23B-20A1349068F3");
    
    // Create the request object.
    AssignRequest assign = new AssignRequest();
    
    // Set the properties of the request object.
    assign.Assignee = assignee;
    assign.Target = target;
          
    // Execute the request.
    AssignResponse assignResponse = (AssignResponse)service.Execute(assign);
    You'll have to edit the guids to use your ids, but the code is relatively straightforward.
    • Marked as answer by Eduardo Arias Tuesday, May 19, 2009 4:53 PM
    Tuesday, May 19, 2009 3:30 PM

All replies

  • this code is straight from the SDK and shows how to assign a record:
    // Set up the CRM service.
    CrmAuthenticationToken token = new CrmAuthenticationToken();
    // You can use enums.cs from the SDK\Helpers folder to get the enumeration for Active Directory authentication.
    token.AuthenticationType = 0; 
    token.OrganizationName = "AdventureWorksCycle";
     
    CrmService service = new CrmService();
    service.Url = "http://<servername>:<port>/mscrmservices/2007/crmservice.asmx";
    service.CrmAuthenticationTokenValue = token;
    service.Credentials = System.Net.CredentialCache.DefaultCredentials;
    
    // Create the SecurityPrincipal object.
    SecurityPrincipal assignee = new SecurityPrincipal();
    assignee.Type = SecurityPrincipalType.User;
    
    // PrincipalId is some known Guid belonging to the user or team that will own this record.
    assignee.PrincipalId = new Guid("326A0053-71CB-465E-9BEB-633E2E0851A9");
    
    // Create the target object for the request.
    TargetOwnedQuote target = new TargetOwnedQuote();
    
    // Set the properties of the target object.
    // EntityId is some known Guid belonging to the account that is being assigned to the user.
    target.EntityId = new Guid("2B951FBC-1C56-4430-B23B-20A1349068F3");
    
    // Create the request object.
    AssignRequest assign = new AssignRequest();
    
    // Set the properties of the request object.
    assign.Assignee = assignee;
    assign.Target = target;
          
    // Execute the request.
    AssignResponse assignResponse = (AssignResponse)service.Execute(assign);
    You'll have to edit the guids to use your ids, but the code is relatively straightforward.
    • Marked as answer by Eduardo Arias Tuesday, May 19, 2009 4:53 PM
    Tuesday, May 19, 2009 3:30 PM
  • Richard,

    You rock!  ... thank you so much for the code. Regarding the guid's I have all the architecture already in place.

    Best,

    Eduardo
    Eduardo
    Tuesday, May 19, 2009 4:53 PM