An important aspect of service-centric systems (i.e. systems composed of services) is the ability to support service discovery at run-time in order to cope with unavailable or malfunctioning services. In this paper we present a framework that supports run-time service discovery. The central characteristics of this framework is the combination of components for monitoring the compliance of service-centric systems with requirements at run-time and components for discovering servies at run-time. The framework uses the former components to generate queries for discovering services that could subtitute for malfunctioning services. It also uses queries derived from the process specification for service discovery. These queries incorporate both structural and behavioral aspects fo the required services.