Recently I had a requirement to create Duplicate detection rule using c# (Plugin) in Account Entity, to avoid redundancy.
You can try like bellow method
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | using System; using System.Collections.Generic; using System.Linq; using System.Text; //CRM SDK Namespace using Microsoft.Xrm.Sdk; using Microsoft.Xrm.Sdk.Query; using Microsoft.Crm.Sdk.Messages; namespace Sample { public class Duplicate_Detection : IPlugin { public void Execute(IServiceProvider serviceProvider) { IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService( typeof (IPluginExecutionContext)); IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService( typeof (IOrganizationServiceFactory)); IOrganizationService service = (IOrganizationService)serviceFactory.CreateOrganizationService(context.UserId); ITracingService tracingService = (ITracingService)serviceProvider.GetService( typeof (ITracingService)); if (context.InputParameters.Contains( "Target" ) && context.InputParameters[ "Target" ] is Entity) { Entity entity = (Entity)context.InputParameters[ "Target" ]; var Name = entity.GetAttributeValue< string >( "name" ); #region Retrieve All Account Record QueryExpression Account = new QueryExpression { EntityName = entity.LogicalName, ColumnSet = new ColumnSet( "name" ) }; Account.Criteria.AddCondition( "name" , ConditionOperator.Equal, Name); Account.Criteria.AddCondition( "statecode" , ConditionOperator.Equal, 0); EntityCollection RetrieveAccount = service.RetrieveMultiple(Account); //If the retrieved Account Count Greater Than 1 , following Error Message Throw if (RetrieveAccount.Entities.Count > 1) { throw new InvalidPluginExecutionException( "Following Record with Same Name Exists" ); } else if (RetrieveAccount.Entities.Count == 0) { return ; } #endregion } } } } |
- Register your plugin Message = Create
- Primary Entity = account
- Post Operation
No comments:
Post a Comment