update owner etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
update owner etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

30 Kasım 2009 Pazartesi

Why it's not updating owner field of record?

Because most probably you are trying to set ownerid field like:

contact.ownerid = new Owner();
contact.ownerid.type = EntityName.systemuser.ToString();
contact.ownerid.Value = [SystemUserGuid];

which is wrong.

Changing the ownership of a record is not that much easy, you should call another CrmService method, so here is the solution:

SecurityPrincipal securityPrincipal = new SecurityPrincipal();
securityPrincipal.Type = SecurityPrincipalType.User;
securityPrincipal.PrincipalId = new Guid(newOwnerID);

TargetOwnedContact target = new TargetOwnedContact();
target.EntityId = new Guid(contactID);

AssignRequest assignRequest = new AssignRequest();
assignRequest.Assignee = securityPrincipal;
assignRequest.Target = target;

AssignResponse assignResponse = (AssignResponse)crmService.Execute(assignRequest, null, null); //CRMWebServiceCall


Yani diyor ki:
Çünkü büyük ihtimalle ownerid için şöyle bir atama yapıyorsunuz:

contact.ownerid = new Owner();
contact.ownerid.type = EntityName.systemuser.ToString();
contact.ownerid.Value = [SystemUserGuid];

ki yanlış.

Bir kaydın sahibini(owner) değiştirmek o kadar kolay degildir ki bu noktada başka bir webservis çagrısı yapmak durumundasınız. Şu aşağıdaki kod blogu size fikir cerecektir:

SecurityPrincipal securityPrincipal = new SecurityPrincipal();
securityPrincipal.Type = SecurityPrincipalType.User;
securityPrincipal.PrincipalId = new Guid(newOwnerID);

TargetOwnedContact target = new TargetOwnedContact();
target.EntityId = new Guid(contactID);

AssignRequest assignRequest = new AssignRequest();
assignRequest.Assignee = securityPrincipal;
assignRequest.Target = target;

AssignResponse assignResponse = (AssignResponse)crmService.Execute(assignRequest, null, null); //CRMWebServiceCall