Plugin: Register on Task, Update Account, Contact, Opportunity and Cases RRS feed

  • Question

  • Hello Team,

    I have a requirement to create a plugin (using .Net), that would use the Task Due Date to update a custom field (Next Activity Date) in Account, Opportunity, Contact and Cases.  I first created a Custom Activity Workflow and when it works I will convert it to a plugin.  The Custom Workflow Activity runs successfully, but does not update the fields in other Entities.  Does anyone have an idea how I can pass data from Task to Update fields in other entities?   

    Here some segments of my code:

    1)  Each secondary entity (Account, Contact, Opportunity and Cases, have these code blocks)

    QueryExpression qeOpportunity = new QueryExpression();

                        qeOpportunity.EntityName = "opportunity";

                        qeOpportunity.ColumnSet = new ColumnSet(true);

                        qeOpportunity.Criteria = new FilterExpression();


                        qeOpportunity.Criteria.AddCondition("statecode"ConditionOperator.Equal, 0);

                        qeOpportunity.Criteria.AddCondition("name"ConditionOperator.Equal, Task["regardingobjectid"]);



                        EntityCollection ecOpportunity = _service.RetrieveMultiple(qeOpportunity);



                        tracingService.Trace("opptynextactivitydate has been retrieved");


                        if (Oppty.Contains("name"))


                               checkNextActivityDate = (DateTime)Acc["esi_nextactivitydate"];


                               if ((checkNextActivityDate != null) && (checkNextActivityDate < DateTime.Now))


                                     Oppty["esi_nextactivitydate"] = null;



                                     tracingService.Trace("opptynextactivitydate has been set to null");





                               foreach (var opptyentity in ecOpportunity.Entities)











    2)  I then pass the final values using these codes:

    var allDates = dates.OrderBy(d => d).ToList();



                               if (dates.Count == 1)



                                     if ((DateTime)dates[0] >= DateTime.Now)



                                            Acc["esi_nextactivitydate"] = dates[0];

                                     Acc["accountid"] = new EntityReference("task", context.PrimaryEntityId);


                                     tracingService.Trace("Account next activity date is updated");


                                     Oppty["esi_nextactivitydate"] = dates[0];

                                     Oppty["opportunityid"] = new EntityReference("task", context.PrimaryEntityId);


                                     tracingService.Trace("Opportunity next activity date is updated");


                                     CaseRecords["esi_nextactivitydate"] = dates[0];

                                     CaseRecords["incidentid"] = new EntityReference("task", context.PrimaryEntityId);


                                     tracingService.Trace("Case next activity date is updated");


                                     Cntacts["esi_nextactivitydate"] = dates[0];

                                     Cntacts["contactid"] = new EntityReference("task", context.PrimaryEntityId);


                                     tracingService.Trace("Contact next activity date is updated");










    Thank you in advance for your help.  


    Sunday, October 29, 2017 9:05 PM