The management of non-functional goals, or Service Level Agreements (SLA), in the development of business processes in a Service Oriented Architecture often requires much manual and error-prone effort by all parties throughout the entire lifecycle of the processes. The formal specification of SLAs into development tools can simplify some of this effort. In particular, the runtime provisioning and monitoring of processes can be achieved by an autonomic system that adapts to changing conditions to maintain the SLA’s goals. The use of Service Oriented Architecture allows us to partition a system into services that are running in a distributed execution environment. When coupled with an associated cost model, it allows us to both execute and monitor processes in an optimal manner, based on a declarative, user-specified optimality function. Experiments demonstrate that the system can indeed adapt to changing workload conditions, saving roughly 70% of the network bandwidth in one part...