Since its emergence, one of the most advertised opportunities offered by service oriented computing has been the possibility of composing loosely coupled services on a per need basis. Services, like Lego pieces, act as modular building blocks which are assembled when a given articulated user request comes and are ready to be reused for other requests. Over the years, the promise has been of reducing recoding and refactoring efforts while achieving scalability, run-time adaptability, and infinite reuse. After reviewing 12 years of personal experiences and research in dynamic service composition, going from initial work on composing trips based on a number of independent travel service operations to the more recent research in home and building automation where services often represent interconnected things in a defined physical space, I will introduce our current efforts in building dynamic service composition frameworks. In particular, I will present the RuG-planner which is able to defer composition decisions to run-time and to seamlessly make revisions in response to a constantly evolving execution environments.