diff --git a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx index 2dd4cac505b48..c54fe102713ee 100644 --- a/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx +++ b/x-pack/solutions/security/plugins/security_solution/public/detection_engine/rule_management_ui/components/rules_table/use_columns.tsx @@ -229,7 +229,7 @@ const INTEGRATIONS_COLUMN: TableColumn = { return ; }, - width: '143px', + width: '70px', truncateText: true, }; @@ -258,7 +258,7 @@ const MODIFIED_COLUMN: TableColumn = { ); }, - width: '70px', + width: '90px', truncateText: true, }; diff --git a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts index 10c6212ea91f0..0214649fbea1d 100644 --- a/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts +++ b/x-pack/solutions/security/plugins/security_solution/server/lib/detection_engine/rule_management/logic/bulk_actions/bulk_edit_rules.ts @@ -22,6 +22,7 @@ import { ruleParamsModifier } from './rule_params_modifier'; import { splitBulkEditActions } from './split_bulk_edit_actions'; import { validateBulkEditRule } from './validations'; import type { PrebuiltRulesCustomizationStatus } from '../../../../../../common/detection_engine/prebuilt_rules/prebuilt_rule_customization_status'; +import { invariant } from '../../../../../../common/utils/invariant'; export interface BulkEditRulesArguments { actionsClient: ActionsClient; @@ -66,12 +67,15 @@ export const bulkEditRules = async ({ const baseVersionsMap = new Map( baseVersions.map((baseVersion) => [baseVersion.rule_id, baseVersion]) ); + const currentRulesMap = new Map(rules.map((rule) => [rule.id, rule])); const result = await rulesClient.bulkEdit({ - ids: rules.map((rule) => rule.id), + ids: Array.from(currentRulesMap.keys()), operations, - paramsModifier: async (currentRule) => { - const ruleParams = currentRule.params; + // Rules Client applies operations to rules client aware fields like tags + // the rule before passing it to paramsModifier(). + paramsModifier: async (partiallyModifiedRule) => { + const ruleParams = partiallyModifiedRule.params; await validateBulkEditRule({ mlAuthz, @@ -80,13 +84,18 @@ export const bulkEditRules = async ({ immutable: ruleParams.immutable, ruleCustomizationStatus, }); + + const currentRule = currentRulesMap.get(partiallyModifiedRule.id); + + invariant(currentRule, "Unable to extract rule's current data in paramsModifier"); + const { modifiedParams, isParamsUpdateSkipped } = ruleParamsModifier( ruleParams, paramsActions ); const nextRule = convertAlertingRuleToRuleResponse({ - ...currentRule, + ...partiallyModifiedRule, params: modifiedParams, });