Decide what a Java facade should simplify, what it should leave alone, and how much subsystem detail callers should still see.
Facade is about reducing surface area. The hard part is choosing which complexity should be hidden and which should remain visible.
A Java facade often hides:
Those are excellent candidates because callers usually do not want to own them repeatedly.
Do not let facade hide important realities such as:
If the facade makes a remote workflow look like a cheap local getter, it may mislead the rest of the codebase.
The best facade level is usually task-oriented, not component-oriented. generateMonthlyStatement() is often stronger than exposing TemplateEngine, DataAssembler, and Exporter to every caller.
Hide mechanics. Keep semantics visible.