Applying application-level multi-tenancy in Software-as-a-Service (SaaS) offerings yields a number of compelling benefits: sharing a single instance of the application between large numbers of customer organizations increases cost efficiency and allows the SaaS provider to attain true economies-of-scale benefits. There is however a main downside to this: increased sharing of resources causes the SaaS application to be very difficult to modify after initial development and deployment without affecting service continuity: any change potentially affects the service levels promised to all enrolled tenant organizations and their end users.This rigidity is a key impediment as now the SaaS provider must evolve and maintain the SaaS offering at run time, on a gradual, per-tenant basis. This in turn causes a reality of multiple co-existing versions of individual components and as such introduces substantial management complexity.To address these challenges, this paper motivates and defines key requirements that allows per-tenant, SLA-aware and gradual upgrades in the context of multi-tenant SaaS applications. In addition, we define an approach that allows the involved stakeholders (tenants, SaaS operators, SaaS developers, etc.) to customize the dynamic enactment of upgrades, and provide a number of alternative software upgrade strategies that represent different service quality trade-offs.