diff --git a/entity_api.inc b/entity_api.inc
index a042526..7a3690b 100644
--- a/entity_api.inc
+++ b/entity_api.inc
@@ -45,7 +45,7 @@ class MigrateDestinationEntityAPI extends MigrateDestinationEntity {
    * @param string $entity_type
    *   A Drupal entity type.
    */
-  public function getKeySchema($entity_type = NULL) {
+  static public function getKeySchema($entity_type = NULL) {
     // Migrate UI invokes $destination->getKeySchema() without any parameters.
     if (!$entity_type) {
       if (isset($this)) {
@@ -180,7 +180,7 @@ class MigrateDestinationEntityAPI extends MigrateDestinationEntity {
         $entity->{$this->id} = $row->migrate_map_destid1;
       }
     }
-    elseif ($migration->getSystemOfRecord() == Migration::SOURCE) {
+    elseif ($migration->getSystemOfRecord() == Migration::SOURCE && empty($entity->is_new)) {
       unset($entity->{$this->id});
     }
 
@@ -227,10 +227,6 @@ class MigrateDestinationEntityAPI extends MigrateDestinationEntity {
         $new_entity->$field = $entity->$field;
       }
 
-      // If a destination id exists, the entity is obviously not new.
-      if (!empty($new_entity->{$this->id}) && isset($new_entity->is_new)) {
-        unset($new_entity->is_new);
-      }
       $entity = $new_entity;
       $this->prepare($entity, $row);
     }
