public void Execute(IServiceProvider serviceProvider) { if (serviceProvider == null) { throw new InvalidPluginExecutionException("serviceProvider"); } var localPluginContext = new LocalPluginContext(serviceProvider); localPluginContext.Trace($"Entered {PluginClassName}.Execute() " + $"Correlation Id: {localPluginContext.PluginExecutionContext.CorrelationId}, " + $"Initiating User: {localPluginContext.PluginExecutionContext.InitiatingUserId}"); try { ExecuteCdsPlugin(localPluginContext); // Now exit - if the derived plugin has incorrectly registered overlapping event registrations, guard against multiple executions. return; } catch (FaultException <OrganizationServiceFault> orgServiceFault) { localPluginContext.Trace($"Exception: {orgServiceFault.ToString()}"); throw new InvalidPluginExecutionException($"OrganizationServiceFault: {orgServiceFault.Message}", orgServiceFault); } finally { localPluginContext.Trace($"Exiting {PluginClassName}.Execute()"); } }
/// <summary> /// Main entry point for he business logic that the plug-in is to execute. /// </summary> /// <param name="serviceProvider">The service provider.</param> /// <remarks> /// For improved performance, Microsoft Dynamics 365 caches plug-in instances. /// The plug-in's Execute method should be written to be stateless as the constructor /// is not called for every invocation of the plug-in. Also, multiple system threads /// could execute the plug-in at the same time. All per invocation state information /// is stored in the context. This means that you should not use global variables in plug-ins. /// </remarks> public void Execute(IServiceProvider serviceProvider) { if (serviceProvider == null) { throw new InvalidPluginExecutionException("serviceProvider"); } // Construct the local plug-in context. LocalPluginContext localcontext = new LocalPluginContext(serviceProvider); localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Entered {0}.Execute()", this.ChildClassName)); try { // Invoke the custom implementation ExecuteCdsPlugin(localcontext); // now exit - if the derived plug-in has incorrectly registered overlapping event registrations, // guard against multiple executions. return; } catch (FaultException <OrganizationServiceFault> e) { localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Exception: {0}", e.ToString())); // Handle the exception. throw new InvalidPluginExecutionException("OrganizationServiceFault", e); } finally { localcontext.Trace(string.Format(CultureInfo.InvariantCulture, "Exiting {0}.Execute()", this.ChildClassName)); } }
protected override void Execute(LocalPluginContext localContext) { // set the appropriate class attributes then // replace this with your code: localContext.Trace("Retrieving target entity."); var target = localContext.GetTargetEntity(); }