Index: trunk/grails-app/controllers/TaskDetailedController.groovy
===================================================================
--- trunk/grails-app/controllers/TaskDetailedController.groovy	(revision 394)
+++ trunk/grails-app/controllers/TaskDetailedController.groovy	(revision 395)
@@ -586,3 +586,35 @@
     }
 
+    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
+    def createBreakin = {
+        def taskInstance = new Task()
+
+        def entryFaultInstance = new Entry(entryType: EntryType.get(1))  // Fault.
+        def entryWorkDoneInstance = new Entry(entryType: EntryType.get(2))  // Work Done.
+
+        return ['taskInstance': taskInstance,
+                        'entryFaultInstance': entryFaultInstance,
+                        'entryWorkDoneInstance': entryWorkDoneInstance]
+    }
+
+    @Secured(['ROLE_AppAdmin', 'ROLE_Manager', 'ROLE_TaskManager', 'ROLE_TaskUser'])
+    def saveBreakin = {
+        def result = taskService.saveBreakin(params)
+
+        if(!result.error) {
+            flash.message = "Task ${result.taskInstance.id} created."
+            redirect(action: 'show', id: result.taskInstance.id)
+            return
+        }
+
+        if(result.error.code == "task.modifications.failedToSave")
+            flash.errorMessage = g.message(code: result.error.code, args: result.error.args)
+
+        render(view:'createBreakin',
+                    model: ['taskInstance': result.taskInstance,
+                                'entryFaultInstance': result.entryFaultInstance,
+                                'entryWorkDoneInstance': result.entryWorkDoneInstance])
+
+    }
+
 } // end of class.
