diff --git a/field_collection.module b/field_collection.module
index 30f175e..d64c462 100644
--- a/field_collection.module
+++ b/field_collection.module
@@ -1400,3 +1400,32 @@ function field_collection_devel_generate($object, $field, $instance, $bundle) {
 
   return array('value' => $field_collection->item_id);
 }
+
+/**
+ * Implements hook_clone_node_alter
+ */
+function field_collection_clone_node_alter(&$node, $context) {
+  $field_instances = field_info_instances('node', $node->type);
+
+  foreach (array_keys($field_instances) as $field_name){
+    $field_info = field_info_field($field_name);
+    if ($field_info['type'] == 'field_collection') {
+      _field_collection_clone_field_collection($node, $field_name);
+    }
+  }
+}
+
+function _field_collection_clone_field_collection(&$node, $field_collection_name) {
+  foreach ($node->$field_collection_name as $lang => &$items){
+    foreach ($items as &$item){
+      $entity_list = entity_load('field_collection_item', array($item['value']));
+      if (count($entity_list) > 0) {
+        $entity = reset($entity_list);
+        $cloned_entity = clone $entity;
+        unset($item['value']);
+        unset($cloned_entity->item_id);
+        $item['entity'] = $cloned_entity;
+      }
+    }
+  }
+}
