atul
atul

Reputation: 143

unable to change the account reference inside the contact using sdk in crm2011

I am unable to change the client by updating the contact using crm 2011 sdk.Here is the code i am using to do that :

Entity contact = new Entity();
contact.LogicalName = "contact";            
contact.Attributes = new AttributeCollection();            
EntityReference clientLookup = new EntityReference();
clientLookup.Id = NewClientBId;
clientLookup.LogicalName = "account";
contact.Attributes.Add("parentcustomerid", clientLookup);
contact.Attributes.Add("contactid", workItem.Id);
SynchronousUtility.UpdateDynamicEntity(CrmConnector.Service, contact);

The code runs fine without any error but when i go to web portal and check the record ,it still points to the old account though updated the modofication time stamp.I also checked the sql profiler query which shows up as below :

exec sp_executesql N'update [ContactBase] set [ModifiedOn]=@ModifiedOn0, [ModifiedBy]=@ModifiedBy0, [ModifiedOnBehalfBy]=NULL where ([ContactId] = @ContactId0)',N'@ModifiedOn0 datetime,@ModifiedBy0 uniqueidentifier,@ContactId0 uniqueidentifier',@ModifiedOn0='2013-07-04 09:21:02',@ModifiedBy0='2F8D969F-34AB-E111-9598-005056947387',@ContactId0='D80ACC4E-A185-E211-AB64-002324040068'

as can be seen above the column i have updated is not even there in the set clause of the update query.Can anyone help me with this ?

Upvotes: 0

Views: 827

Answers (1)

Guido Preite
Guido Preite

Reputation: 15128

I tested your code and it works:

Entity contact = new Entity();
contact.LogicalName = "contact";
contact.Attributes = new AttributeCollection();
EntityReference clientLookup = new EntityReference();
clientLookup.Id = new Guid("3522bae7-5ae5-e211-9d27-b4b52f566dbc");
clientLookup.LogicalName = "account";
contact.Attributes.Add("parentcustomerid", clientLookup);
contact.Attributes.Add("contactid", new Guid("16dc4143-5ae5-e211-9d27-b4b52f566dbc"));

As you can see I used existing Id in my environment, and to perform the update I used

service.Update(contact);

Reasons why your code is not working:

  • NewClientBId is not the right account Guid
  • workItem.Id is not the right contact Guid
  • the function SynchronousUtility.UpdateDynamicEntity has errors

Upvotes: 1

Related Questions