Abstract-Current adaptation approaches mainly work in isolation and cannot be easily integrated to tackle complex adaptation scenarios. The few existing cross-layer adaptation techniques are somewhat inflexible because the adaptation process is predefined and static.In this paper we propose a methodology for the dynamic and flexible adaptation of multi-layer applications. We use events to trigger the process of matching adaptation templates, which expose adaptation logic as BPEL processes. The matching process employs taxonomies of adaptation mismatches to select adaptation templates based on the degree of match between events and adaptation mismatches. We provide support for cross-layer adaptation by allowing templates to be composed either directly, through invocations of WSDL operations or indirectly, through events.