diff --git a/includes/commerce.controller.inc b/includes/commerce.controller.inc
index 0fe2249..d05ac63 100644
--- a/includes/commerce.controller.inc
+++ b/includes/commerce.controller.inc
@@ -164,14 +164,15 @@ class DrupalCommerceEntityController extends DrupalDefaultEntityController imple
       if (empty($entity->{$this->idKey}) || !empty($entity->is_new)) {
         // For new entities, create the row in the base table, then save the
         // revision.
+        $op = 'insert';
         $return = drupal_write_record($this->entityInfo['base table'], $entity);
         if (!empty($this->revisionKey)) {
           drupal_write_record($this->entityInfo['revision table'], $entity);
           $update_base_table = TRUE;
         }
-        $this->invoke('insert', $entity);
       }
       else {
+        $op = 'update';
         $return = drupal_write_record($this->entityInfo['base table'], $entity, $this->idKey);
 
         if (!empty($this->revisionKey)) {
@@ -183,9 +184,6 @@ class DrupalCommerceEntityController extends DrupalDefaultEntityController imple
             drupal_write_record($this->entityInfo['revision table'], $entity, $this->revisionKey);
           }
         }
-
-        $this->resetCache(array($entity->{$this->idKey}));
-        $this->invoke('update', $entity);
       }
 
       if (!empty($update_base_table)) {
@@ -196,6 +194,9 @@ class DrupalCommerceEntityController extends DrupalDefaultEntityController imple
         ->execute();
       }
 
+      $this->resetCache(array($entity->{$this->idKey}));
+      $this->invoke($op, $entity);
+
       // Ignore slave server temporarily.
       db_ignore_slave();
       unset($entity->is_new);

