Index: /branches/features/taskProcedureRework/grails-app/controllers/TaskProcedureDetailedController.groovy
===================================================================
--- /branches/features/taskProcedureRework/grails-app/controllers/TaskProcedureDetailedController.groovy	(revision 775)
+++ /branches/features/taskProcedureRework/grails-app/controllers/TaskProcedureDetailedController.groovy	(revision 776)
@@ -5,4 +5,5 @@
 
     def filterService
+    def assetService
     def taskProcedureService
 
@@ -94,5 +95,7 @@
         }
         else {
-            return [ taskProcedureInstance : taskProcedureInstance ]
+            def assemblies = assetService.getAssemblies(taskProcedureInstance.linkedTask.primaryAsset)
+            return [ taskProcedureInstance : taskProcedureInstance,
+                            assemblies: assemblies ]
         }
     }
@@ -125,5 +128,7 @@
         }
 
-        render(view:'edit', model:[taskProcedureInstance: result.taskProcedureInstance])
+        def assemblies = assetService.getAssemblies(result.taskProcedureInstance.linkedTask.primaryAsset)
+        render(view:'edit', model:[taskProcedureInstance: result.taskProcedureInstance,
+                                                assemblies: assemblies])
     }
 
@@ -157,5 +162,14 @@
         def taskProcedureInstance = new TaskProcedure()
         taskProcedureInstance.properties = params
-        return ['taskProcedureInstance':taskProcedureInstance]
+
+        // Populate a maintenanceAction for each assembly.
+        def assemblies = assetService.getAssemblies(params.linkedTask.primaryAsset)
+        assemblies.eachWithIndex { assembly, i ->
+            def ma = taskProcedureInstance.maintenanceActionLazyList.get(i)
+            ma.assetSubItem = assembly
+            ma.procedureStepNumber = (i+1)*10
+        }
+
+        return ['taskProcedureInstance':taskProcedureInstance, 'assemblies': assemblies]
     }
 
@@ -181,5 +195,7 @@
         }
 
-        render(view:'create', model:[taskProcedureInstance: result.taskProcedureInstance])
+        def assemblies = assetService.getAssemblies(result.taskProcedureInstance.linkedTask.primaryAsset)
+        render(view:'create', model:[taskProcedureInstance: result.taskProcedureInstance,
+                                                    assemblies: assemblies])
     }
 
Index: /branches/features/taskProcedureRework/grails-app/services/AssetService.groovy
===================================================================
--- /branches/features/taskProcedureRework/grails-app/services/AssetService.groovy	(revision 775)
+++ /branches/features/taskProcedureRework/grails-app/services/AssetService.groovy	(revision 776)
@@ -22,4 +22,24 @@
                 }
         }
+    }
+
+    /**
+    * Determines and returns a list of assemblies for an asset.
+    * This is purely a 'load from database' type method since a new hibernateSession is used.
+    * @params Asset to get the subItems for.
+    * @returns A list of the assemblies.
+    */
+    def getAssemblies(Asset asset) {
+        def assemblies = []
+        // Database efficiency:
+        // The asset is configured to batch fetch assetSubItems which
+        // in turn are configured to batch fetch subItems.
+        Asset.withNewSession {
+            Asset.get(asset.id).assetSubItems.each {
+                assemblies.addAll(it.subItems)
+            }
+        }
+        assemblies.sort { p1, p2 -> p1.name.compareToIgnoreCase(p2.name) }
+        return assemblies
     }
 
Index: /branches/features/taskProcedureRework/grails-app/views/taskDetailed/show.gsp
===================================================================
--- /branches/features/taskProcedureRework/grails-app/views/taskDetailed/show.gsp	(revision 775)
+++ /branches/features/taskProcedureRework/grails-app/views/taskDetailed/show.gsp	(revision 776)
@@ -566,5 +566,5 @@
                                         <tr>
                                             <th>Step</th>
-                                            <th>Sub Item</th>
+                                            <th>Assembly</th>
                                             <th>Description</th>
                                             <th>Reasoning</th>
Index: /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_maintenanceAction.gsp
===================================================================
--- /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_maintenanceAction.gsp	(revision 775)
+++ /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_maintenanceAction.gsp	(revision 776)
@@ -12,5 +12,5 @@
         <td valign="top" class="value ${hasErrors(bean:ma,field:'assetSubItem','errors')}">
             <g:select optionKey="id"
-                                from="${AssetSubItem.findAllByIsActive(true)}"
+                                from="${assemblies}"
                                 name="maintenanceActionLazyList[${i}].assetSubItem.id"
                                 value="${ma?.assetSubItem?.id}"
Index: /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_maintenanceActions.gsp
===================================================================
--- /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_maintenanceActions.gsp	(revision 775)
+++ /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_maintenanceActions.gsp	(revision 776)
@@ -70,5 +70,5 @@
 
                     <th>Step</th>
-                    <th>Sub Item</th>
+                    <th>Assembly</th>
                     <th>Description</th>
                     <th>Reasoning</th>
@@ -79,5 +79,8 @@
             <tbody id="ma_wrapper">
                     <g:each var="ma" in="${taskProcedureInstance.maintenanceActions}" status="i">
-                            <g:render template="maintenanceAction" model="['tp':taskProcedureInstance, 'ma': ma, 'i':i]" />
+                            <g:render template="maintenanceAction" model="['tp':taskProcedureInstance,
+                                                                                                                'ma': ma,
+                                                                                                                'i':i,
+                                                                                                                'assemblies': assemblies]" />
                     </g:each>
                     </tr>
Index: /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp
===================================================================
--- /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp	(revision 775)
+++ /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp	(revision 776)
@@ -62,5 +62,6 @@
 
     <br />
-    <g:render template="maintenanceActions" model="['taskProcedureInstance': taskProcedureInstance]" />
+    <g:render template="maintenanceActions" model="['taskProcedureInstance': taskProcedureInstance,
+                                                                                        'assemblies': assemblies]" />
     <br />
 </div>
Index: /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/create.gsp
===================================================================
--- /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/create.gsp	(revision 775)
+++ /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/create.gsp	(revision 776)
@@ -32,5 +32,8 @@
         </div>
         <table style="display:none;">
-            <g:render template="maintenanceAction" model="['tp': null, 'ma': null, 'i': '_clone']" />
+            <g:render template="maintenanceAction" model="['tp': null,
+                                                                                                'ma': null,
+                                                                                                'i': '_clone',
+                                                                                                'assemblies': assemblies]" />
         </table>
     </body>
Index: /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/edit.gsp
===================================================================
--- /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/edit.gsp	(revision 775)
+++ /branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/edit.gsp	(revision 776)
@@ -35,5 +35,8 @@
         </div>
         <table style="display:none;">
-            <g:render template="maintenanceAction" model="['tp': null, 'ma': null, 'i': '_clone']" />
+            <g:render template="maintenanceAction" model="['tp': null,
+                                                                                                'ma': null,
+                                                                                                'i': '_clone',
+                                                                                                'assemblies': assemblies]" />
         </table>
     </body>
