Hi
I have a plugin that identifies the record if it exists it updates. If you are new should be the path of creation. The plugin is updating and creating a new record.
Code:
public void Execute(IServiceProvider serviceProvider) { try { Entity entidade = null; IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext)); if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity) entidade = (Entity)context.InputParameters["Target"]; IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId); if (context.MessageName.ToUpper() != "CREATE") { return; } if (entidade != null) { ColumnSet attributes = new ColumnSet(new string[] { "corp_chave_integracao", "corp_grupo_empresaid", "corp_nome_grupo" }); QueryExpression queryL = new QueryExpression("corp_grupo_empresa"); queryL.ColumnSet = attributes; // queryL.ColumnSet = new ColumnSet("corp_chave_integracao", "corp_grupo_empresaid", "corp_nome_grupo"); queryL.Criteria.AddCondition(new ConditionExpression("corp_chave_integracao", ConditionOperator.Equal, entidade.Attributes["corp_chave_integracao"])); var colecaoL = service.RetrieveMultiple(queryL); if (colecaoL.Entities.Count > 0) { var nomeGrupo = entidade.Attributes["corp_nome_grupo"]; var ChaveIntegracao = entidade.Attributes["corp_chave_integracao"]; Entity grupoEmpresa = new Entity("corp_grupo_empresa"); //grupoEmpresa = service.Retrieve("corp_grupo_empresa", colecaoL.Entities[0].Id, attributes); grupoEmpresa["corp_nome_grupo"] = nomeGrupo; grupoEmpresa["corp_chave_integracao"] = ChaveIntegracao; grupoEmpresa["corp_grupo_empresaid"] = colecaoL.Entities[0].Id; service.Update(grupoEmpresa); //throw new InvalidPluginExecutionException(); } } } catch (Exception ex) { //Log.Tratar(ex); throw new InvalidPluginExecutionException("An error occurred in the plug-in.", ex); } }