Unfortunately, there is no way to overwrite the node bound estimate without doing a custom branch.
The trick with the heuristic will not work either: you could indeed fool CPLEX by providing a fake objective value and using the NOCHECK option, but then CPLEX would treat this as _globally_ valid bound/cutoff.
The only way I think of right now is this: define a variable that is equivalent to the objective and then inject local cuts that tighten the bounds on that variable.
#CPLEXOptimizers#DecisionOptimization