public void Execute(IServiceProvider serviceProvider) { // Récupération des services liés aux plugins var ps = new PluginServices(serviceProvider); try { // Si ce plugin ne s'exécute pas dans le cadre de l'entité // attendue, on annule le traitement if (ps.Context.PrimaryEntityName != "mctools_parameter") { return; } switch (ps.Context.Stage) { case PluginStage.PreOperation: { switch (ps.Context.MessageName) { case PluginMessage.Create: { var inputData = (Entity)ps.Context.InputParameters[PluginInputParameters.Target]; if (ParameterWithSameLogicalNameExists( inputData["mctools_logicalname"].ToString(), ps.GetIOrganizationService(true))) { throw new InvalidPluginExecutionException( "Un paramètre avec ce nom existe déjà!"); } CopyLocalToGlobal(inputData, null, ps.GetIOrganizationService(true), ps); CleanOtherAttributesValue(inputData); } break; case PluginMessage.Update: { var inputData = (Entity)ps.Context.InputParameters[PluginInputParameters.Target]; var preImage = ps.Context.PreEntityImages["Image"]; CopyLocalToGlobal(inputData, preImage, ps.GetIOrganizationService(true), ps); if (inputData.Contains("mctools_valuetype")) { CleanOtherAttributesValue(inputData, preImage); } } break; } } break; } } catch (Exception error) { ps.Trace(error.ToString()); throw new InvalidPluginExecutionException(error.Message); } }