public void MoveItem(ItemDefinition itemDefinition, ItemDefinition destination, CallContext context) { if (DisableSerialization) { return; } Assert.ArgumentNotNull(itemDefinition, "itemDefinition"); var sourceItem = GetSourceFromDefinition(itemDefinition, true); // we use cache here because we want the old path present before the move var destinationItem = GetSourceFromDefinition(destination); if (!_predicate.Includes(destinationItem).IsIncluded) // if the destination we are moving to is NOT included for serialization, we delete the existing item { var existingItem = GetExistingSerializedItem(sourceItem.Id); if (existingItem != null) { existingItem.Delete(); _logger.MovedItemToNonIncludedLocation(_serializationProvider.LogName, existingItem); } return; } _serializationProvider.MoveSerializedItem(sourceItem, destinationItem); _logger.MovedItem(_serializationProvider.LogName, sourceItem, destinationItem); }