I had a scenario where I had to copy items to different sites in the same site collection. I got problems when I tried to copy an item with a lookup field. It copies ok but the lookup was all wrong since they pointed to the item with the same id as the source witch was not always the same item in the look up list. Then I got the idea of querying the look up list at the target site to see if it had a field with the same value as the source site. Using this I made the lookup field point to that field in the item and now it was able to point to the right item. SPFieldLookup lookupField = (SPFieldLookup)field; string lookUpListName = contextWeb.Lists[new Guid(lookupField.LookupList)].Title; string lookUpFieldName = lookupField.LookupField; // Get the target list on the copy to web. SPList copyToListLookUp = copyToList.ParentWeb.Lists[lookUpListName]; SPField lookUpTargetF...