Skip to main content

Notifications

Announcements

No record found.

Customer experience | Sales, Customer Insights,...
Unanswered

Unable to get onholdtime field of incident on close message from plugin

Posted on by 450

Hi there all experts.
I am brand new to write crm plugins, but I am trying to do my best.
I have written a plugin on preopration stage , on close message of incident.

I know I should get incident record from incident resolution record.

I can retrieve other fields of incident according to the below code, but I can not get onholdtime field( duration of being on-hold in minute )of incident.
Here is the code I retrieve and display createdon field.

            IPluginExecutionContext context = (IPluginExecutionContext)
               serviceProvider.GetService(typeof(IPluginExecutionContext));
            // Get a reference to the Organization service.
            IOrganizationServiceFactory servicefactory =
                (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService service = servicefactory.CreateOrganizationService(context.UserId);
            DateTime actualEnd = DateTime.Now;
            if (context.InputParameters.Contains("IncidentResolution"))
            {
                Entity incidentResolution = (Entity)context.InputParameters["IncidentResolution"];
                Guid guid = ((EntityReference)incidentResolution.Attributes["incidentid"]).Id;
                if (incidentResolution.Contains("actualend"))
                {
                    actualEnd = (DateTime)incidentResolution.Attributes["actualend"];
                }
                Entity retrievedIncident = service.Retrieve("incident", guid, new ColumnSet("ms_resolvedatetime", "createdon", "onholdtime"));
                DateTime createdOn = (DateTime) retrievedIncident.Attributes["createdon"];
                // int onHoldInMinute = (int) retrievedIncident.Attributes["onholdtime"];
                retrievedIncident.Attributes["ms_resolvedatetime"] = actualEnd;
                throw new
                     InvalidPluginExecutionException(string.Format("createdon: {0}",
                     createdOn.ToString()));

It returns the createdon field value via throwing an exception.

But when I uncomment the line :

int onHoldInMinute = (int) retrievedIncident.Attributes["onholdtime"];

I give me this error, with meaning that there is no field with this key/name.

<Message>System.Collections.Generic.KeyNotFoundException: Microsoft Dynamics CRM has experienced an error. Reference number for administrators or support: #2D66D0C6</Message>

This message is like the plugin can not find the onholdtime,
what is wrong?

Under review

Thank you for your reply! To ensure a great experience for everyone, your content is awaiting approval by our Community Managers. Please check back later.

Helpful resources

Quick Links

December Spotlight Star - Muhammad Affan

Congratulations to a top community star!

Top 10 leaders for November!

Congratulations to our November super stars!

Tips for Writing Effective Suggested Answers

Best practices for providing successful forum answers ✍️

Leaderboard

#1
André Arnaud de Calavon Profile Picture

André Arnaud de Cal... 291,280 Super User 2024 Season 2

#2
Martin Dráb Profile Picture

Martin Dráb 230,235 Most Valuable Professional

#3
nmaenpaa Profile Picture

nmaenpaa 101,156

Leaderboard

Featured topics

Product updates

Dynamics 365 release plans