I still believe this BADI is the way to go.
In order to get triggered, please check you did implement the following method : IF_CRM_BP_UIU_SAVE~REGISTER_4_SAVE.
There is an implementation example you can rely on. Here is an example of coding for this method :
METHOD IF_CRM_BP_UIU_SAVE~REGISTER_4_SAVE. * Note: the registration of the handler might depend on the existence of certain data or * the activation of certain views. * Data can be retrieved from ir_access_header by the save event handler, * via get_related_entities( ) calls. * The views can be rtrieved via ir_ovp_window_contr->get_list_of_static_views( ). SET HANDLER on_save_event ACTIVATION 'X'. SET HANDLER on_revert_event ACTIVATION 'X'. * Store information for the save handler if necessary. * E.g. for a call of cl_crm_uiu_bp_tools=>check_sa_required_fields gv_access_header = ir_access_header. gv_ovp_window_contr = ir_ovp_window_contr. ENDMETHOD.
Check the BADI is activated, and then it should be trigerred.
Best regards,
Sylvain