Thursday 22 March 2012

The context is not currently tracking the entity

I encountered this error when I deploy a plug-in to CRM online environment. I tested the same plug-in in on premises environment and it works without any error.

The plugin read and write to entity A and entity B (they have no relationships). The plug-in is triggered when entity A records are created and it retrieve all records from entity B and process them.

The error was thrown when it tries to save changes to entity B, with this error message: The context is not currently tracking the <<entity B>> entity

It suggested the services context does not track <<entity B>> in the scope. I researched this topic and found out I need to use OrganizationServiceContext.Attach Method. However when I use this method it returns with this error: The context is already tracking the <<entity B>> entity. :(

And did more research and found that it actually need to detach the object ( OrganizationServiceContext.Detach Method) before it can be attached.

This makes no sense to me but this is the work around.

Tuesday 13 March 2012

CRM 2011 Plug-in error: Object reference not set to an instance of an object.


Problem/Error:
When I create an instance of object from the sdk generated code by using the default constructor like:
email.regardingobjectid = new CrmEntityReference();
I will find it return a null object:




This is not the result I wanted because the object does not have correct structure and when I try to assign a value to the object (in this case is regardingobjectid) it will throw a NullReferenceException error like this:
Solution
The solution is relatively simple by using a different constructor and it will give a correct object:
email.regardingobjectid = new CrmEntityReference("contact", contact.contactid);