Index: /trunk/grails-app/controllers/AssetSubItemDetailedController.groovy
===================================================================
--- /trunk/grails-app/controllers/AssetSubItemDetailedController.groovy	(revision 346)
+++ /trunk/grails-app/controllers/AssetSubItemDetailedController.groovy	(revision 347)
@@ -92,20 +92,20 @@
 
     def delete = {
-        def assetSubItemInstance = AssetSubItem.get( params.id )
-        if(assetSubItemInstance) {
-            try {
-                assetSubItemInstance.delete(flush:true)
-                flash.message = "AssetSubItem ${params.id} deleted"
-                redirect(action: "search")
-            }
-            catch(org.springframework.dao.DataIntegrityViolationException e) {
-                flash.errorMessage = "AssetSubItem ${params.id} could not be deleted"
-                redirect(action:show,id:params.id)
-            }
-        }
-        else {
-            flash.message = "AssetSubItem not found with id ${params.id}"
-            redirect(action: "search")
-        }
+        def result = assetSubItemService.delete(params)
+
+        if(!result.error) {
+            flash.message = g.message(code: "default.delete.success", args: ["AssetSubItem", params.id])
+            redirect(action: search)
+            return
+        }
+
+        flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
+
+        if(result.error.code == "default.not.found") {
+            redirect(action: search)
+            return
+        }
+
+        redirect(action:show, id: params.id)
     }
 
Index: /trunk/grails-app/i18n/messages.properties
===================================================================
--- /trunk/grails-app/i18n/messages.properties	(revision 346)
+++ /trunk/grails-app/i18n/messages.properties	(revision 347)
@@ -12,4 +12,6 @@
 
 assetSubItem.asset.not.found=Could not complete operation as an asset was supplied but not found.
+assetSubItem.assets.associated=Could not complete operation as assets are still associated with this sub item.
+assetSubItem.maintenanceActions.associated=Could not complete operation as maintenance actions are still associated with this sub item.
 
 sub.task.create.confirm=Immediately create and save a new sub task?
Index: /trunk/grails-app/services/AssetSubItemService.groovy
===================================================================
--- /trunk/grails-app/services/AssetSubItemService.groovy	(revision 346)
+++ /trunk/grails-app/services/AssetSubItemService.groovy	(revision 347)
@@ -2,4 +2,32 @@
 
     boolean transactional = false
+
+    def delete(params) {
+        def result = [:]
+        def fail = { Map m ->
+            result.error = [ code: m.code, args: ["AssetSubItem", params.id] ]
+            return result
+        }
+
+        result.assetSubItemInstance = AssetSubItem.get(params.id)
+
+        if(!result.assetSubItemInstance)
+            return fail(code:"default.not.found")
+
+        if(result.assetSubItemInstance.assets)
+            return fail(code:"assetSubItem.assets.associated")
+
+        if(result.assetSubItemInstance.maintenanceActions)
+            return fail(code:"assetSubItem.maintenanceActions.associated")
+
+        try {
+            result.assetSubItemInstance.delete(flush:true)
+            return result //Success.
+        }
+        catch(org.springframework.dao.DataIntegrityViolationException e) {
+            return fail(code:"default.delete.failure")
+        }
+
+    }
 
     def create(params) {
