In this webinar, our experts showcase a variety of demo use cases of how different components of the...
If you are working on creating or updating a dynamic entity in Microsoft Dynamics CRM and got stuck on properly setting the statuscode field please read further:
Assigning value to the statuscode fields is not same as assigning any other fields programmatically. It needs a bit of trick. Statecode and statucode fields in CRM are tightly related and they go hand on hand.
Let us consider a setting like this:
Statuscodename | Statuscode |
Open | 1 |
Done | 2 |
Canceled | 3 |
Scheduled | 4 |
statecodename | Statuscode |
Open | 0 |
Completed | 1 |
Canceled | 2 |
Scheduled | 3 |
Let us set the statuscode of a dynamic entity say "new_smartappointment" to done. CRM does not allow us to just set the status code to "Done". We also have to set the statecode to completed. To set these state code and status code we need to use SetStateDynamicEntityrequest class.
And here is how we do it:
SetStateDynamicEntityRequest req = new SetStateDynamicEntityRequest(); Moniker n = new Moniker { Id = id, Name = " new_smartappointment " }; // id here is a variable that stores the GUID of the record to be updated. req.Entity = n; req.State="Completed" //set the statecode req.Status=2 // set the status code. SetStateDynamicEntityResponse res = (SetStateDynamicEntityResponse)service.Execute(req);
Hope that helps some of you out there.
Happy CRM'ing!
Just noticed this was tagged CRM 2011, but did not mention version in the post. While this will work in 2011 using the old 4.0 endpoint, the 2011 message for this that will work against the newer 2011 organization service endpoint is just called SetStateRequest.
http://msdn.microsoft.com/en-us/library/microsoft.crm.sdk.messages.setstaterequest.aspx