1212 get_current_severity ,
1313 get_current_status ,
1414 get_current_vex_justification ,
15+ get_current_vex_remediations ,
1516)
1617from application .core .services .observation_log import create_observation_log
1718from application .core .services .risk_acceptance_expiry import (
@@ -159,6 +160,8 @@ def check_rule_for_observation(
159160 or observation_before .current_severity != observation .current_severity
160161 or observation_before .rule_vex_justification != observation .rule_vex_justification
161162 or observation_before .current_vex_justification != observation .current_vex_justification
163+ or observation_before .rule_vex_remediations != observation .rule_vex_remediations
164+ or observation_before .current_vex_remediations != observation .current_vex_remediations
162165 or observation_before .general_rule != observation .general_rule
163166 or observation_before .product_rule != observation .product_rule
164167 ):
@@ -238,6 +241,10 @@ def _check_rule_fields(
238241 observation .rule_vex_justification = rule .new_vex_justification
239242 observation .current_vex_justification = get_current_vex_justification (observation )
240243
244+ if rule .new_vex_remediations :
245+ observation .rule_vex_remediations = rule .new_vex_remediations
246+ observation .current_vex_remediations = get_current_vex_remediations (observation )
247+
241248 if observation .current_status == Status .STATUS_RISK_ACCEPTED :
242249 if observation_before .current_status != Status .STATUS_RISK_ACCEPTED :
243250 observation .risk_acceptance_expiry_date = calculate_risk_acceptance_expiry_date (observation .product )
@@ -341,6 +348,11 @@ def _write_observation_log(
341348 if observation_before .current_vex_justification != observation .current_vex_justification
342349 else ""
343350 )
351+ vex_remediations = (
352+ observation .current_vex_remediations
353+ if observation_before .current_vex_remediations != observation .current_vex_remediations
354+ else ""
355+ )
344356 risk_acceptance_expiry_date = (
345357 observation .risk_acceptance_expiry_date
346358 if observation_before .risk_acceptance_expiry_date != observation .risk_acceptance_expiry_date
@@ -362,6 +374,7 @@ def _write_observation_log(
362374 priority = priority ,
363375 comment = comment ,
364376 vex_justification = vex_justification ,
377+ vex_remediations = vex_remediations ,
365378 assessment_status = Assessment_Status .ASSESSMENT_STATUS_AUTO_APPROVED ,
366379 risk_acceptance_expiry_date = risk_acceptance_expiry_date ,
367380 )
@@ -409,6 +422,16 @@ def _write_observation_log_no_rule(
409422 else None
410423 )
411424
425+ observation .rule_vex_remediations = ""
426+ previous_vex_remediations = observation .current_vex_remediations
427+ observation .current_vex_remediations = get_current_vex_remediations (observation )
428+
429+ log_vex_remediations = (
430+ observation .current_vex_remediations
431+ if previous_vex_remediations != observation .current_vex_remediations
432+ else ""
433+ )
434+
412435 if previous_product_rule :
413436 comment = f"Removed product { previous_product_rule .type .lower ()} rule { previous_product_rule .name } "
414437 elif previous_general_rule :
@@ -423,6 +446,7 @@ def _write_observation_log_no_rule(
423446 priority = log_priority ,
424447 comment = comment ,
425448 vex_justification = log_vex_justification ,
449+ vex_remediations = log_vex_remediations ,
426450 assessment_status = Assessment_Status .ASSESSMENT_STATUS_AUTO_APPROVED ,
427451 risk_acceptance_expiry_date = log_risk_acceptance_expiry_date ,
428452 )
0 commit comments