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