Many to many association plugin d365 code

 Plugin Code :


using System;

using Microsoft.Xrm.Sdk;

using Indegene.Omnipresence.Common;

 

namespace Indegene.Omnipresence.Plugins.Deltasync

{

    /// <summary>

    /// AssociateProcedureLog_PostOperation

    /// </summary>

    public class AssociateProcedureLog_PostOperation : PluginBase

    {

        /// <summary>

        /// Initializes a new instance of the <see cref="AssociateProcedureLog_PostOperation"/> class.

        /// </summary>

        /// <param name="unsecure">Contains public (unsecured) configuration information.</param>

        /// <param name="secure">Contains non-public (secured) configuration information.

        /// When using Microsoft Dynamics 365 for Outlook with Offline Access,

        /// the secure string is not passed to a plug-in that executes while the client is offline.</param>

        public AssociateProcedureLog_PostOperation(string unsecure, string secure)

          : base(typeof(AssociateProcedureLog_PostOperation))

        {

 

            // TODO: Implement your custom configuration handling.

        }

 

        /// <summary>

        /// ExecuteCrmPlugin

        /// </summary>

        /// <param name="localContext"></param>

        protected override void ExecuteCrmPlugin(LocalPluginContext localContext)

        {

            localContext.Trace("Starting Plugin : AssociateProcedureLog_PreOperation ");

            if (localContext == null)

            {

                throw new InvalidPluginExecutionException("localContext");

            }

            localContext.Trace("Starting Plugin: " + this.GetType().Name);

            string pluginMessage = localContext.PluginExecutionContext.MessageName.ToLower();

            localContext.Trace("Message: " + pluginMessage);

 

            try

            {

                switch (pluginMessage)

                {

                    case PluginMessages.Associate:

                        HandleMessage_Associate(localContext);

                        break;

                }

            }

            catch (Exception ex)

            {

                localContext.Trace("Exception: " + ex.StackTrace);

                throw new InvalidPluginExecutionException(ex.Message);

            }

 

        }

 

        /// <summary>

        /// HandleMessage_Associate

        /// </summary>

        /// <param name="localContext"></param>

        private void HandleMessage_Associate(LocalPluginContext localContext)

        {

            localContext.Trace("Call HandleMessage_Associate");

            if (!localContext.PluginExecutionContext.InputParameters.Contains(PluginParameters.Relationship))

                return;

            if (!localContext.PluginExecutionContext.InputParameters.Contains("Target") || !(localContext.PluginExecutionContext.InputParameters["Target"] is EntityReference))

                return;

 

            string relationshipName = ((Relationship)localContext.PluginExecutionContext.InputParameters[PluginParameters.Relationship]).SchemaName;

            EntityReference targetEntity = (EntityReference)localContext.PluginExecutionContext.InputParameters["Target"];

            localContext.Trace("ID :" + targetEntity.Id);

            localContext.Trace("Relationship: " + relationshipName);

            localContext.Trace("Target: " + targetEntity.LogicalName);

            if (relationshipName == EntityAttrs.Order.OrderRelationship)

            {

                UpdateModifiedon(targetEntity, localContext);

            }

        }

 

        /// <summary>

        /// UpdateModifiedon

        /// </summary>

        /// <param name="order"></param>

        /// <param name="service"></param>

        private static void UpdateModifiedon(EntityReference order, LocalPluginContext service)

        {

            service.Trace("UpdateModifiedon");

            service.Trace("ID :" + order.Id);

            service.Trace("LogicalName: " + order.LogicalName);

            Entity entity = new Entity(order.LogicalName)

            {

                Id = order.Id

            };

            entity["indskr_orderupdatedon"] = DateTime.Now;

            service.OrganizationService.Update(entity);

        }

    }

}


Plugin Steps:





Comments

Popular posts from this blog

Power Automate compose vs variable

Update record when checkbox checked using JavaScript and save d365

Power pages custom button add in gried