This paper introduces an approach to develop componentbased adaptive distributed applications. Our approach separates the communication and the functional aspects of a distributed application and specifies the communication part as an abstract distributed component called the communication component. We then introduce a model-based process for automatically building many evolutionary variants of this component at deployment level, and integrating these variants into the target adaptive application that can dynamically select the running variant in order to adapt to the changing context. Thanks to an adaptation guide generated by the process, the adaptive application can coordinate distributed adaptations to (1) consistently transfer data of the replaced variant to the new one and (2) maintain the architectural coherence between distributed parts of the application. Hence, the target adaptive application can correctly adapt at runtime without loss of data. In this paper, we present the...