There are several nice examples that show how to clone a record in MS CRM. Most of the examples I found cloned native entities: Cases, Contacts, Opportunities, etc.

 

 
I needed to clone a custom entity and ran into problems during testing. The process for modifying the ISV config file and HTML code was fairly simple. But, when I tested the button, it would “hang”. Through the debugging process, I realized that the call to open a new form wasn’t quite right.
 
Since I was cloning a record for a custom entity, I needed to provide something that identified which custom entity I was cloning: the entity type code. I could find this value by opening a “new” record for the custom entity and look for “etc=” in the URL. This attribute needed to be added to the edit command.
 
The code to open a new form would now look like:
oClonedContact = window.open('/UserDefined/edit.aspx?etc=10006','','menubar=0, status=1, width=1000, height=600');
 
Once I modified the HTML script and cleared out my browsers cache (deleted temporary internet files), the button worked perfectly!
 
Other helpful references for cloning records: