Hello - well, rule number one of Boolean Failure is to isolate the objects and run Intersect on them, then inspect the curves that result. The curves need to be such that you could trim all the input surfaces with them if you wanted - here this is clearly not the case;
Ideally Boolean operations get closed, intersecting objects as input - two boxes say - here, you have multiple objects some not joined and certainly not closed:
I’d shoot for cleaning that up make sure you have cleanly interecting closed objects - or, use Trim and Split and Join to get the results.