Migrate Sitecore from 6.6 to 8.1. $name tokens of Cloned Items are not replaced correctly by Item Name

Hi all, 

I’m doing the Sitecore migration from version 6.6 to 8.1. My strategy is to install a clean new Sitecore 8.1 and then gradually migrate the data from 6.6 to 8.1. Below is the steps that I followed:

  1. Serialize the data from 6.6
  2. Install a clean Sitecore 8.1
  3. Deserialize the data from 6.6 to 8.1

At step 3 above I got an issue related to deserialize items which are cloned from another (original) item ( I used the Sitecore OOB serialize and deserialize features). The issue is that after deserializing, I checked the cloned items and observed that fields that used the $name token are not replaced correctly ( it stills $name,  my expected is that the $name token should have replaced by the item name).

After going around. I found out that in version 8.1 Sitecore introduced a new shared field name ‘__Source Item’ (reference: https://dev.sitecore.net/Downloads/Sitecore%20Experience%20Platform/Sitecore%2081/Sitecore%20Experience%20Platform%2081%20Initial%20Release/Release%20Notes) and this field is empty which caused the issue ( this issue happened only in Sitecore 8.1, I didn’t have this issue when migrate from 6.6 to 8.0)

Our initial though to solve the problem is to write a tool which query all the cloned items (with the condition “source != null” and “__source item == null”). That way I could get all cloned items, then I will copy data from old “source” item (which is used until 8.0) to new “__source item” (which is just introduced in 8.1).  Once we populate these fields correctly,  $name token of cloned items will be replaced by item name. I'm not sure if it is the correct way to solve the problem. Does anyone have the similar issue like this? Please help me to solve the problem.  Many thanks.