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,
});