Today I had to update the description in my incident entity with a resolution from Close Case Dialog.

There are a two ways to do that:
First: Create a custom dialog and use this one to close the incident. In the new dialog we can create the steps and to decide what field upgrade. I found this good tutorial to do that:
In this tutorial is explain the way to implement the new Dialog and the way to mapping the resolution field with description or another fields.
But this solution is too long and the effort is to much for my requirements.
Another fast solution is to use the “Close” message of “incident” is the message to take advantage of this, and running at “Pre Validation” stage of execution will ensure your changes get applied to the case before it is closed by CRM and no longer updateable.
Here is a screenshot illustrating the appropriate message and step to subscribe to

The one thing that you may not expect is the entity you will actually get passed within your plugin will not actually be incident (case) but will actually by Incident Resolution:
IPluginExecutionContext context = localContext.PluginExecutionContext; Entity incidentResolution = (Entity)context.InputParameters["IncidentResolution"];
From this you can get the case to update using a standard retrieve to get the Incident associated at the IncidentResolution:
Entity incident = localContext.OrganizationService.Retrieve("incident", ((EntityReference)incidentResolution["incidentid"]).Id, new Microsoft.Xrm.Sdk.Query.ColumnSet(true));
Now we can update the description entity with the Resolution field:
IOrganizationService service = localContext.OrganizationService;
Incident newService = null;
newService = new Incident<
{
Id = _entityToValidate.Id,
LogicalName = _entityToValidate.LogicalName
};
newService.Description += incidentResolution.Subject;
service.Update(newService);
Archiviato in:Microsoft Dynamics Crm Tagged: CRM, javascript, Microsoft Dynamics CRM

Like
Report
*This post is locked for comments