Mobile services operate on hosts with diverse capabilities, in heterogeneous networks, where the usage of resources, such as processor, memory and network, is constantly changing. In order to maintain efficiency, in terms of performance and resource utilization, such services should be able to adapt to changes in their environment.This paper proposes and empirically evaluates an application transparent adaptation strategy for service-oriented systems. The strategy is based upon the solution of an optimization model derived from an existing suite of metrics for services, which maps system services to network nodes.The strategy is evaluated empirically using a number of distinct scenarios involving runtime changes in processor, memory and network utilization. In order to maintain execution efficiency in response to these changing operating conditions, the strategy rearranges the service topology of the system dynamically by moving services between network nodes. The results show that the negative impact of environmental changes on runtime efficiency can be reduced, after adaptation, from 33% to 100% depending on the selected parameters.