Service function chains, or more generally, virtual network services, evolve throughout their life-cycle due to traffic fluctuations, resource usage, and the stringent requirements of the SLO (Service Level Objective) that must be fulfilled. Network operators resort to elasticity mechanisms (e.g., vertical and horizontal scaling) and migration procedures to adapt the service function chains dynamically to meet their requirements constantly. However, most state-of-the-art solutions do not evaluate the overall impact of such mechanisms on the service function chains or the resulting penalty costs (e.g., migration downtime and SLO violation). To bridge this gap, we propose DAVINCI, a decision-making tool with different adaptation policies that allows the network operator to adapt the service function chains to minimize network changes (e.g., reallocating paths and VNFs) while keeping penalty costs at their lowest level. Moreover, DAVINCI allows for the adaptations (e.g., migration, vertical and horizontal scaling) to be expressed as a set of decisions and leverages the Min Cost Flow problem to estimate migration downtime. The analytical evaluation shows that DAVINCI outperforms the existing state-of-the-art solution (NFV-PEAR) in terms of migration, traffic costs, and the overhead induced by the migration and elasticity mechanisms while significantly reducing penalty costs.