diff -u b/field_collection.entity.inc b/field_collection.entity.inc --- b/field_collection.entity.inc +++ b/field_collection.entity.inc @@ -337,6 +337,22 @@ } } } + // If we don't find the delta in the current values (cause the item + // is being deleted, for example), we search the delta in the originalcontent. + if (!empty($entity->original)) { + foreach ($entity->original->{$this->field_name} as $langcode => &$data) { + foreach ($data as $delta => $item) { + if (isset($item['value']) && $item['value'] == $this->item_id) { + $this->langcode = $langcode; + return $delta; + } + elseif (isset($item['entity']) && $item['entity'] === $this) { + $this->langcode = $langcode; + return $delta; + } + } + } + } } }