Index: trunk/grails-app/services/AssetService.groovy
===================================================================
--- trunk/grails-app/services/AssetService.groovy	(revision 687)
+++ trunk/grails-app/services/AssetService.groovy	(revision 688)
@@ -5,4 +5,6 @@
 
     boolean transactional = false
+
+    def sessionFactory
 
     def assetSubItemService
@@ -235,3 +237,119 @@
     } // end saveCopySrvce
 
+    /**
+    * Create recommended extended attributes for all assets.
+    */
+    def createRecommendedExtendedAttributes() {
+        def result = [:]
+
+        def hibernateSession = sessionFactory.currentSession
+
+        def assets = Asset.list()
+        def locationDescription = ExtendedAttributeType.get(5)
+        def ecr = ExtendedAttributeType.get(9)
+        def assetNumber = ExtendedAttributeType.get(17)
+        def assetCondition = ExtendedAttributeType.get(16)
+        def maintenancePercentComplete = ExtendedAttributeType.get(13)
+        def registrationRequired = ExtendedAttributeType.get(14)
+        def registrationExpiryDate =  ExtendedAttributeType.get(15)
+        def regulatoryRequirement = ExtendedAttributeType.get(12)
+        def riskLevel = ExtendedAttributeType.get(10)
+        def safeWorkProcedure = ExtendedAttributeType.get(11)
+
+        for(asset in assets) {
+
+            def attributeTypes = asset.assetExtendedAttributes.collect {it.extendedAttributeType}
+
+            //AssetExtendedAttribute
+            def assetExtendedAttributeInstance
+
+            if(!attributeTypes.contains(locationDescription)) {
+                //AssetExtendedAttribute #1
+                assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "Not Specified",
+                                                                                                                    asset: asset,
+                                                                                                                    extendedAttributeType: locationDescription)
+                assetExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(ecr)) {
+                //AssetExtendedAttribute #2
+                assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "Not Specified",
+                                                                                                                    asset: asset,
+                                                                                                                    extendedAttributeType: ecr)
+                assetExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(assetNumber)) {
+                //AssetExtendedAttribute #3
+                assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "Not Specified",
+                                                                                                                    asset: asset,
+                                                                                                                    extendedAttributeType: assetNumber)
+                assetExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(assetCondition)) {
+                //AssetExtendedAttribute #4
+                assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "Not Specified",
+                                                                                                                    asset: asset,
+                                                                                                                    extendedAttributeType: assetCondition)
+                assetExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(maintenancePercentComplete)) {
+                //AssetExtendedAttribute #5
+                assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "TBA",
+                                                                                                                    asset: asset,
+                                                                                                                    extendedAttributeType: maintenancePercentComplete)
+                assetExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(registrationRequired)) {
+                //AssetExtendedAttribute #6
+                assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "Not Specified",
+                                                                                                                    asset: asset,
+                                                                                                                    extendedAttributeType: registrationRequired)
+                assetExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(registrationExpiryDate)) {
+                //AssetExtendedAttribute #7
+                assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "Not Specified",
+                                                                                                                    asset: asset,
+                                                                                                                    extendedAttributeType:registrationExpiryDate)
+                assetExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(regulatoryRequirement)) {
+                //AssetExtendedAttribute #8
+                assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "Not Specified",
+                                                                                                                    asset: asset,
+                                                                                                                    extendedAttributeType: regulatoryRequirement)
+                assetExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(riskLevel)) {
+                //AssetExtendedAttribute #9
+                assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "Not Specified",
+                                                                                                                    asset: asset,
+                                                                                                                    extendedAttributeType: riskLevel)
+                assetExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(safeWorkProcedure)) {
+                //AssetExtendedAttribute #10
+                assetExtendedAttributeInstance = new AssetExtendedAttribute(value: "Not Specified",
+                                                                                                                    asset: asset,
+                                                                                                                    extendedAttributeType: safeWorkProcedure)
+                assetExtendedAttributeInstance.save()
+            }
+
+            hibernateSession.flush()
+
+        } // for
+
+        // Success.
+        return result
+
+    } // createRecommendedExtendedAttributes()
+
 } // end class
Index: trunk/grails-app/services/AssetSubItemService.groovy
===================================================================
--- trunk/grails-app/services/AssetSubItemService.groovy	(revision 687)
+++ trunk/grails-app/services/AssetSubItemService.groovy	(revision 688)
@@ -1,3 +1,4 @@
 
+import net.kromhouts.HqlBuilder
 import org.apache.commons.lang.WordUtils
 
@@ -5,4 +6,6 @@
 
     boolean transactional = false
+
+    def sessionFactory
 
     /**
@@ -120,3 +123,83 @@
     } // save()
 
+    /**
+    * Get a list of level 1 assetSubItems.
+    * @returns By default all level 1 assetSubItems are returned.
+    */
+    def getLevel1AssetSubItems(params) {
+
+        // A result is returned for every level 1 assetSubItem.
+        def q = new HqlBuilder().query {
+            select 'assetSubItem'
+            from 'AssetSubItem assetSubItem',
+                    'inner join assetSubItem.assets as asset'
+            where 'asset != null' // ensure that only level 1 assetSubItems are returned.
+        }
+        def assetSubItems = AssetSubItem.executeQuery(q.query, q.namedParams)
+
+    }
+
+    /**
+    * Create recommended extended attributes for all level 1 subItems.
+    */
+    def createRecommendedExtendedAttributes() {
+        def result = [:]
+
+        def hibernateSession = sessionFactory.currentSession
+
+        def assetSubItems = getLevel1AssetSubItems()
+
+        def manufacturer = ExtendedAttributeType.get(8)
+        def modelNumber = ExtendedAttributeType.get(1)
+        def serialNumber = ExtendedAttributeType.get(3)
+        def manufacturedDate = ExtendedAttributeType.get(4)
+
+        for(assetSubItem in assetSubItems) {
+
+            def attributeTypes = assetSubItem.assetSubItemExtendedAttributes.collect {it.extendedAttributeType}
+
+            //AssetSubItemExtendedAttribute
+            def assetSubItemExtendedAttributeInstance
+
+            if(!attributeTypes.contains(manufacturer)) {
+                //AssetSubItemExtendedAttribute #1
+                assetSubItemExtendedAttributeInstance = new AssetSubItemExtendedAttribute(value: "Not Specified",
+                                                                                                                    assetSubItem: assetSubItem,
+                                                                                                                    extendedAttributeType: manufacturer)
+                assetSubItemExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(modelNumber)) {
+                //AssetSubItemExtendedAttribute #2
+                assetSubItemExtendedAttributeInstance = new AssetSubItemExtendedAttribute(value: "Not Specified",
+                                                                                                                    assetSubItem: assetSubItem,
+                                                                                                                    extendedAttributeType: modelNumber)
+                assetSubItemExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(serialNumber)) {
+                //AssetSubItemExtendedAttribute #3
+                assetSubItemExtendedAttributeInstance = new AssetSubItemExtendedAttribute(value: "Not Specified",
+                                                                                                                    assetSubItem: assetSubItem,
+                                                                                                                    extendedAttributeType: serialNumber)
+                assetSubItemExtendedAttributeInstance.save()
+            }
+
+            if(!attributeTypes.contains(manufacturedDate)) {
+                //AssetSubItemExtendedAttribute #4
+                assetSubItemExtendedAttributeInstance = new AssetSubItemExtendedAttribute(value: "Not Specified",
+                                                                                                                    assetSubItem: assetSubItem,
+                                                                                                                    extendedAttributeType: manufacturedDate)
+                assetSubItemExtendedAttributeInstance.save()
+            }
+
+            hibernateSession.flush()
+
+        } // for
+
+        // Success.
+        return result
+
+    } // createRecommendedExtendedAttributes()
+
 } // end class
Index: trunk/grails-app/services/CreateDataService.groovy
===================================================================
--- trunk/grails-app/services/CreateDataService.groovy	(revision 687)
+++ trunk/grails-app/services/CreateDataService.groovy	(revision 688)
@@ -1425,5 +1425,5 @@
 
         //Section #1
-        sectionInstance = new Section(name: "Press",
+        sectionInstance = new Section(name: "A-Press",
                                                                 description: "Press Section",
                                                                 site: Site.get(3),
