The relationships between the loosely coupled services of a composition can be non-deterministic and unreliable. This requires that a composite application has the ability to adaptively reconfigure itself to continuously satisfy the system requirements. Imperative composition approaches such as BPEL do not provide the abstractions necessary to create adaptive compositions. In this paper we introduce an organisation-oriented, application-centric service composition framework that aims to achieve adaptive application behaviour from non-deterministic and unreliable services. The responsibility for coordinating and managing service interactions resides with a coordination/management layer of the application itself. In this layer, contracts define and regulate the relationships between the service roles in a composition. By creating and revoking contracts between roles and by binding service roles to individual services, a composition can be adaptively reconfigured in response to changing requirements and conditions.