Skip to main content

Capture Case Resolution data before reopening case using C#

 When we reactivate cases, the old case resolution record is set as cancelled and a new case resolution record is created, before you re open the case, you can actually store case resolution data, which you can later use when you re-close the case.

 

Solution:

Below is the code to get case resolution data 

 

  private void GetCaseResolutionData()

        {

            string resolutiondata = null, Remark=null;

            try {

                EntityReference currentEntity = (EntityReference)context.InputParameters["Target"];

                Entity Case = service.Retrieve("incident", currentEntity.Id, new ColumnSet(new string[] {"statuscode"}));

                Guid CaseID = currentEntity.Id;

                string ResolutionType = Case.FormattedValues["statuscode"];  //case resolution dropdown formatted value

                int Resolutionvalue = ((OptionSetValue)Case["statuscode"]).Value; //case resolution option set value

                QueryExpression query = new QueryExpression("activitypointer");

                query.ColumnSet.AddColumns("subject");

                query.ColumnSet.AddColumns("description");

                query.Criteria = new FilterExpression();

                query.Criteria.AddCondition("regardingobjectid", ConditionOperator.Equal, CaseID);

                EntityCollection results = service.RetrieveMultiple(query);

                trace.Trace("after Query Exprrssion");

                if (results.Entities.Count >= 1)

                {

                      resolutiondata = results.Entities[0].GetAttributeValue<string>("subject"); // resolution saved against the case

                     Remark= results.Entities[0].GetAttributeValue<string>("description"); //remarks saved against case

                } 

 

            

         Code below is to close case again with data saved as per above string

 

            var resolution = new Entity("incidentresolution");

            resolution["subject"] = resolutiondata;

            resolution["incidentid"] = new EntityReference { Id = caseID, LogicalName = "incident" };

            var closeIncidentRequest = new CloseIncidentRequest

            {

                IncidentResolution = resolution,

                Status = new OptionSetValue((int)resolutionType)

            };

            service.Execute(closeIncidentRequest);


Comments