diff --git a/circle/vm/operations.py b/circle/vm/operations.py
index fa63c11..6c613bd 100644
--- a/circle/vm/operations.py
+++ b/circle/vm/operations.py
@@ -973,26 +973,48 @@ class RenewOperation(InstanceOperation):
     required_perms = ()
     concurrency_check = False
 
+    def set_time_of_suspend(self, activity, suspend, force):
+        with activity.sub_activity(
+            'renew_suspend', concurrency_check=False,
+                readable_name=ugettext_noop('set time of suspend')):
+            if (not force and suspend and self.instance.time_of_suspend and
+                    suspend < self.instance.time_of_suspend):
+                raise HumanReadableException.create(ugettext_noop(
+                    "Renewing the machine with the selected lease would "
+                    "result in its suspension time get earlier than before."))
+            self.instance.time_of_suspend = suspend
+
+    def set_time_of_delete(self, activity, delete, force):
+        with activity.sub_activity(
+            'renew_delete', concurrency_check=False,
+                readable_name=ugettext_noop('set time of delete')):
+            if (not force and delete and self.instance.time_of_delete and
+                    delete < self.instance.time_of_delete):
+                raise HumanReadableException.create(ugettext_noop(
+                    "Renewing the machine with the selected lease would "
+                    "result in its delete time get earlier than before."))
+            self.instance.time_of_delete = delete
+
     def _operation(self, activity, lease=None, force=False, save=False):
         suspend, delete = self.instance.get_renew_times(lease)
-        if (not force and suspend and self.instance.time_of_suspend and
-                suspend < self.instance.time_of_suspend):
-            raise HumanReadableException.create(ugettext_noop(
-                "Renewing the machine with the selected lease would result "
-                "in its suspension time get earlier than before."))
-        if (not force and delete and self.instance.time_of_delete and
-                delete < self.instance.time_of_delete):
-            raise HumanReadableException.create(ugettext_noop(
-                "Renewing the machine with the selected lease would result "
-                "in its delete time get earlier than before."))
-        self.instance.time_of_suspend = suspend
-        self.instance.time_of_delete = delete
+        try:
+            self.set_time_of_suspend(activity, suspend, force)
+        except HumanReadableException:
+            pass
+        try:
+            self.set_time_of_delete(activity, delete, force)
+        except HumanReadableException:
+            pass
+
         if save:
             self.instance.lease = lease
+
         self.instance.save()
+
         return create_readable(ugettext_noop(
             "Renewed to suspend at %(suspend)s and destroy at %(delete)s."),
-            suspend=suspend, delete=delete)
+            suspend=self.instance.time_of_suspend,
+            delete=self.instance.time_of_suspend)
 
 
 @register_operation