Index: trunk/grails-app/services/AssetService.groovy
===================================================================
--- trunk/grails-app/services/AssetService.groovy	(revision 427)
+++ trunk/grails-app/services/AssetService.groovy	(revision 429)
@@ -159,10 +159,13 @@
             // Copy subItems from level 2 and bellow.
             def copyAssetSubItem = { assetSubItemToCopy, parentItem ->
-                def assetSubItemInstance = new AssetSubItem(name: assetSubItemToCopy.name,
+                def nextCount = AssetSubItem.count() + 1
+                def baseName = assetSubItemToCopy.name.split('\\(id:')[0]
+                def name = baseName +'(id:'+nextCount+')'
+                def assetSubItemInstance = new AssetSubItem(name: name,
                                                                                             description: assetSubItemToCopy.description,
                                                                                             parentItem: parentItem)
 
                 if(assetSubItemInstance.hasErrors() || !assetSubItemInstance.save())
-                    return fail(field:"subItems", code:"default.create.failure")
+                    return fail(code:"asset.copy.subItem.create.failure")
 
                 def i = 0
@@ -172,5 +175,5 @@
                     i++
                     if(i > 100)
-                        fail(code:"default.create.failure")
+                        fail(code:"asset.copy.subItem.too.many.failure")
                     // Stop if an error is flagged.
                     if(result.error)
@@ -181,10 +184,13 @@
             // Copy the 1st level of subItems.
             def copyAssetSubItem1 = { assetSubItemToCopy ->
-                assetSubItemInstance1 = new AssetSubItem(name: assetSubItemToCopy.name,
+                def nextCount = AssetSubItem.count() + 1
+                def baseName = assetSubItemToCopy.name.split('\\(id:')[0]
+                def name = baseName +'(id:'+nextCount+')'
+                assetSubItemInstance1 = new AssetSubItem(name: name,
                                                                                         description: assetSubItemToCopy.description,
                                                                                         asset: result.assetInstance)
 
                 if(assetSubItemInstance1.hasErrors() || !assetSubItemInstance1.save())
-                    return fail(field:"assetSubItems", code:"default.create.failure")
+                    return fail(code:"asset.copy.subItem.create.failure")
 
                 result.assetInstance.addToAssetSubItems(assetSubItemInstance1)
@@ -196,5 +202,5 @@
                     i++
                     if(i > 100)
-                        fail(code:"default.create.failure")
+                        fail(code:"asset.copy.subItem.too.many.failure")
                     // Stop if an error is flagged.
                     if(result.error)
@@ -217,5 +223,5 @@
                 i++
                 if(i > 100)
-                    fail(code:"default.create.failure")
+                    fail(code:"asset.copy.subItem.too.many.failure")
                 // Stop if an error is flagged.
                 if(result.error)
