Index: trunk/grails-app/controllers/AppCoreController.groovy
===================================================================
--- trunk/grails-app/controllers/AppCoreController.groovy	(revision 133)
+++ trunk/grails-app/controllers/AppCoreController.groovy	(revision 134)
@@ -23,4 +23,7 @@
 
     def options = {
+    }
+
+    def acknowledgements = {
     }
 
Index: trunk/grails-app/controllers/AssignedPersonDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/AssignedPersonDetailedController.groovy	(revision 133)
+++ trunk/grails-app/controllers/AssignedPersonDetailedController.groovy	(revision 134)
@@ -82,7 +82,13 @@
 
     def create = {
+		if(!params.task?.id) {
+			flash.message = "Please select a task and then 'Add Assigned Person'"
+			redirect(controller: "taskDetailed", action: list)
+		}
+		else {
         def assignedPersonInstance = new AssignedPerson()
         assignedPersonInstance.properties = params
         return ['assignedPersonInstance':assignedPersonInstance]
+		}
     }
 
Index: trunk/grails-app/controllers/TaskDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskDetailedController.groovy	(revision 133)
+++ trunk/grails-app/controllers/TaskDetailedController.groovy	(revision 134)
@@ -20,18 +20,4 @@
     }
 
-//     def show = {
-//         def taskInstance = Task.get( params.id )
-// 
-//         if(!taskInstance) {
-//             flash.message = "Task not found with id ${params.id}"
-//             redirect(action:list)
-//         }
-//         else { 
-//             def taskProcedureInstance = TaskProcedure.get(taskInstance?.taskProcedure?.id)
-//             return [ taskInstance : taskInstance,  taskProcedureInstance: taskProcedureInstance] 
-// 
-//         }
-//     }
-
     def show = {
         def taskInstance = Task.get( params.id )
@@ -42,15 +28,39 @@
         }
         else {
+			params.max = 10
+			params.order = "desc"
+			params.sort = "id"
+
+			def subTaskInstanceList = Task.findAllByParentTask(taskInstance, params)
+			def subTaskInstanceTotal = Task.countByParentTask(taskInstance)					
+            def showTaskTab = new String("true")
+
             def taskProcedureInstance = TaskProcedure.get(taskInstance.taskProcedure?.id)
             def taskProcedureExits = new Boolean("true")
-            def showTaskTab = new String("true")
-
             if(!taskProcedureInstance) {
                 taskProcedureExits = false
             }
+// 			else {
+				params.order = "asc"
+				params.sort = "procedureStepNumber"
+				def maintenanceActionList = MaintenanceAction.findAllByTaskProcedure(taskProcedureInstance, params)
+// 			}
+						
+            def taskRecurringScheduleInstance = TaskRecurringSchedule.get(taskInstance.taskRecurringSchedule?.id)
+            def taskRecurringScheduleExits= new Boolean("true")
+			if(!taskRecurringScheduleInstance) {
+                taskRecurringScheduleExits = false
+            }
+			
             return [ taskInstance : taskInstance,
                             taskProcedureInstance: taskProcedureInstance,
                             taskProcedureExits: taskProcedureExits,
-                            showTaskTab: showTaskTab] 
+                            showTaskTab: showTaskTab,
+							subTaskInstanceList: subTaskInstanceList,
+	   						subTaskInstanceTotal: subTaskInstanceTotal,
+		  					subTaskInstanceMax: params.max,
+		 					maintenanceActionList: maintenanceActionList,
+							taskRecurringScheduleInstance: taskRecurringScheduleInstance,
+	   						taskRecurringScheduleExits: taskRecurringScheduleExits] 
         }
     }
@@ -136,32 +146,22 @@
         }
     }
-
-    //Generate a new TaskProcedure for a taskInstance.
-    def generateProcedure = {
-        def taskProcedureInstance = new TaskProcedure()
-        taskProcedureInstance.properties = params
-
-        def taskInstance = Task.get(params.taskInstance.id)
-        def taskProcedureExits = new Boolean("true")
-        def showProcedureTab = new String("true")
-
-        if(!taskProcedureInstance.hasErrors() && taskProcedureInstance.save()) {
-            taskProcedureInstance.addToTasks(taskInstance)
-            flash.message = "Procedure created, you can now add steps to the procedure"
-//             redirect(action:show, id:params.taskInstance.id)
+	
+	def listSubTasks = {
+		def parentTaskInstance = Task.get(params.id)
+				
+        if(!parentTaskInstance) {
+            flash.message = "Task not found with id ${params.id}"
+            redirect(action:list)
         }
         else {
-            taskProcedureExits = false
-        }
-
-        render(view:'show',model:[ taskInstance : taskInstance,  
-                                                        taskProcedureInstance: taskProcedureInstance, 
-                                                        taskProcedureExits: taskProcedureExits,
-                                                        showProcedureTab: showProcedureTab])
-    }
-
-    def findProcedure = {
-        redirect(controller:"taskProcedureDetailed", action:"list", id:params.taskInstance.id) 
-    }
+		params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
+		def subTaskInstanceList = Task.findAllByParentTask(parentTaskInstance, params)
+		def subTaskInstanceTotal = Task.countByParentTask(parentTaskInstance)
+				
+        [ taskInstanceList: subTaskInstanceList,
+			taskInstanceTotal:  subTaskInstanceTotal,
+   			parentTaskInstance: parentTaskInstance]
+		}
+	}
         
 }
Index: trunk/grails-app/controllers/TaskProcedureDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskProcedureDetailedController.groovy	(revision 133)
+++ trunk/grails-app/controllers/TaskProcedureDetailedController.groovy	(revision 134)
@@ -11,4 +11,8 @@
         params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)
         [ taskProcedureInstanceList: TaskProcedure.list( params ), taskProcedureInstanceTotal: TaskProcedure.count() ]
+    }
+	
+    def search = {
+        redirect(action:list)
     }
 
@@ -82,12 +86,18 @@
 
     def create = {
+		def taskInstance = Task.get(params.taskInstance?.id)
+		
         def taskProcedureInstance = new TaskProcedure()
         taskProcedureInstance.properties = params
-        return ['taskProcedureInstance':taskProcedureInstance]
+        return ['taskProcedureInstance':taskProcedureInstance,
+						taskInstance: taskInstance]
     }
 
     def save = {
         def taskProcedureInstance = new TaskProcedure(params)
+		def taskInstance = Task.get(params.taskInstance.id)
+				
         if(!taskProcedureInstance.hasErrors() && taskProcedureInstance.save()) {
+			taskProcedureInstance.addToTasks(taskInstance)
             flash.message = "TaskProcedure ${taskProcedureInstance.id} created"
             redirect(action:show,id:taskProcedureInstance.id)
Index: trunk/grails-app/controllers/TaskRecurringScheduleDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskRecurringScheduleDetailedController.groovy	(revision 133)
+++ trunk/grails-app/controllers/TaskRecurringScheduleDetailedController.groovy	(revision 134)
@@ -80,20 +80,40 @@
         }
     }
-
+	
     def create = {
-        def taskRecurringScheduleInstance = new TaskRecurringSchedule()
-        taskRecurringScheduleInstance.properties = params
-        return ['taskRecurringScheduleInstance':taskRecurringScheduleInstance]
+        try {
+            def taskInstance = Task.get(params.taskInstance.id)
+			def taskRecurringScheduleInstance = new TaskRecurringSchedule()
+            taskRecurringScheduleInstance.task = taskInstance
+            return [taskRecurringScheduleInstance: taskRecurringScheduleInstance]
+        }
+        catch(Exception e) {
+            flash.message = "Please select a task, then Create a Recurring Schedule for it.'"
+            redirect(controller:"taskDetailed", action:"list")
+        }
     }
 
     def save = {
         def taskRecurringScheduleInstance = new TaskRecurringSchedule(params)
-        if(!taskRecurringScheduleInstance.hasErrors() && taskRecurringScheduleInstance.save()) {
-            flash.message = "TaskRecurringSchedule ${taskRecurringScheduleInstance.id} created"
-            redirect(action:show,id:taskRecurringScheduleInstance.id)
-        }
-        else {
-            render(view:'create',model:[taskRecurringScheduleInstance:taskRecurringScheduleInstance])
-        }
+		def taskInstance = Task.get(params.task.id)
+		
+		if(!taskRecurringScheduleInstance.hasErrors() && taskRecurringScheduleInstance.save()) {
+			
+			taskInstance.taskRecurringSchedule = taskRecurringScheduleInstance
+					
+			if(taskInstance.save()) {
+				flash.message = "TaskRecurringSchedule ${taskRecurringScheduleInstance.id} created"
+				redirect(action:show,id:taskRecurringScheduleInstance.id)
+			}
+			else {
+				flash.message = "Task could not be saved and therefore the Recurring Schedule has been disgarded, cause unknown."				
+				render(view:'create',model:[taskRecurringScheduleInstance:taskRecurringScheduleInstance])
+			}
+		}
+		else {
+			render(view:'create',model:[taskRecurringScheduleInstance:taskRecurringScheduleInstance])
+		}
+
     }
+	
 }
