Index: branches/features/taskProcedureRework/grails-app/domain/DocumentReference.groovy
===================================================================
--- branches/features/taskProcedureRework/grails-app/domain/DocumentReference.groovy	(revision 793)
+++ branches/features/taskProcedureRework/grails-app/domain/DocumentReference.groovy	(revision 793)
@@ -0,0 +1,23 @@
+class DocumentReference {
+
+    String name
+    String location
+
+    Boolean toBeDeleted
+    Boolean isNew
+    static transients = [ 'toBeDeleted', 'isNew' ]
+
+//     static hasMany = []
+
+    static belongsTo = [TaskProcedure]
+
+    static constraints = {
+        name(blank:false,maxSize:75)
+        location(blank:false,maxSize:500)
+    }
+
+    String toString() {
+        "${this.name} - ${this.location}"
+    }
+}
+
Index: branches/features/taskProcedureRework/grails-app/domain/TaskProcedure.groovy
===================================================================
--- branches/features/taskProcedureRework/grails-app/domain/TaskProcedure.groovy	(revision 792)
+++ branches/features/taskProcedureRework/grails-app/domain/TaskProcedure.groovy	(revision 793)
@@ -14,9 +14,16 @@
 
     List maintenanceActions = new ArrayList()
+    List documentReferences = new ArrayList()
 
-    static hasMany = [tasks: Task, maintenanceActions: MaintenanceAction]
+    static hasMany = [tasks: Task,
+                                    maintenanceActions: MaintenanceAction,
+                                    documentReferences: DocumentReference]
 
     def getMaintenanceActionLazyList() {
         return LazyList.decorate(maintenanceActions, FactoryUtils.instantiateFactory(MaintenanceAction.class))
+    }
+
+    def getDocumentReferenceLazyList() {
+        return LazyList.decorate(documentReferences, FactoryUtils.instantiateFactory(DocumentReference.class))
     }
 
@@ -25,4 +32,5 @@
     static mapping = {
         maintenanceActions cascade:"all-delete-orphan"
+        documentReferences cascade:"all-delete-orphan"
     }
 
Index: branches/features/taskProcedureRework/grails-app/services/TaskProcedureService.groovy
===================================================================
--- branches/features/taskProcedureRework/grails-app/services/TaskProcedureService.groovy	(revision 792)
+++ branches/features/taskProcedureRework/grails-app/services/TaskProcedureService.groovy	(revision 793)
@@ -49,12 +49,21 @@
                 result.taskProcedureInstance.maintenanceActions.removeAll(nullMaintenanceActions)
             }
+            def nullDocumentReferences = result.taskProcedureInstance.documentReferences.findAll {!it}
+            if (nullDocumentReferences) {
+                result.taskProcedureInstance.documentReferences.removeAll(nullDocumentReferences)
+            }
 
             // Save for restoration if validation fails.
             def savedMaintenanceActions = new ArrayList(result.taskProcedureInstance.maintenanceActions)
+            def savedDocumentReferences = new ArrayList(result.taskProcedureInstance.documentReferences)
 
             // Remove toBeDeleted before validation.
-            def toBeDeleted = result.taskProcedureInstance.maintenanceActions.findAll {it.toBeDeleted}
-            if (toBeDeleted) {
-                result.taskProcedureInstance.maintenanceActions.removeAll(toBeDeleted)
+            def ma_toBeDeleted = result.taskProcedureInstance.maintenanceActions.findAll {it.toBeDeleted}
+            if (ma_toBeDeleted) {
+                result.taskProcedureInstance.maintenanceActions.removeAll(ma_toBeDeleted)
+            }
+            def docRef_toBeDeleted = result.taskProcedureInstance.documentReferences.findAll {it.toBeDeleted}
+            if (docRef_toBeDeleted) {
+                result.taskProcedureInstance.documentReferences.removeAll(docRef_toBeDeleted)
             }
 
@@ -64,6 +73,8 @@
                 // The toBeDeleted items are hidden in the view.
                 result.taskProcedureInstance.maintenanceActions = savedMaintenanceActions
-                // Populate maintenanceAction errors for display.
+                result.taskProcedureInstance.documentReferences = savedDocumentReferences
+                // Populate collection errors for display.
                 result.taskProcedureInstance.maintenanceActions.each { it.validate() }
+                result.taskProcedureInstance.documentReferences.each { it.validate() }
                 return fail(code:"default.update.failure")
             }
@@ -108,4 +119,8 @@
                 result.taskProcedureInstance.maintenanceActions.removeAll(nullMaintenanceActions)
             }
+            def nullDocumentReferences = result.taskProcedureInstance.documentReferences.findAll {!it}
+            if (nullDocumentReferences) {
+                result.taskProcedureInstance.documentReferences.removeAll(nullDocumentReferences)
+            }
 
             // Also sets: taskInstance.taskProcedure = taskProcedureInstance
@@ -113,6 +128,7 @@
 
             if(result.taskProcedureInstance.hasErrors() || !result.taskProcedureInstance.save()) {
-                // Populate maintenanceAction errors for display.
+                // Populate collection errors for display.
                 result.taskProcedureInstance.maintenanceActions.each { it.validate() }
+                result.taskProcedureInstance.documentReferences.each { it.validate() }
                 return fail(code:"default.create.failure")
             }
Index: branches/features/taskProcedureRework/grails-app/views/taskDetailed/show.gsp
===================================================================
--- branches/features/taskProcedureRework/grails-app/views/taskDetailed/show.gsp	(revision 792)
+++ branches/features/taskProcedureRework/grails-app/views/taskDetailed/show.gsp	(revision 793)
@@ -561,4 +561,37 @@
                             </div>
 
+                            <br />
+
+                            <g:if test="${taskProcedureInstance.documentReferences}">
+                                <div class="list">
+                                    <table>
+                                        <thead>
+                                            <tr>
+                                                <th>Document Reference</th>
+                                                <th>Location</th>
+                                            </tr>
+                                        </thead>
+                                        <tbody>
+                                            <g:each in="${taskProcedureInstance.documentReferences}" status="i" var="docRef">
+                                                <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
+
+                                                    <td valign="top" class="name">
+                                                        ${fieldValue(bean:docRef, field:'name')}
+                                                    </td>
+
+                                                    <td  valign="top" style="text-align:left;" class="value">
+                                                        ${fieldValue(bean:docRef, field:'location')}
+                                                    </td>
+
+                                                </tr>
+                                            </g:each>
+
+                                        </tbody>
+                                    </table>
+                                </div>
+                            </g:if>
+
+                            <br />
+
                             <div class="list">
                                 <table>
Index: branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_documentReference.gsp
===================================================================
--- branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_documentReference.gsp	(revision 793)
+++ branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_documentReference.gsp	(revision 793)
@@ -0,0 +1,27 @@
+
+    <tr id="documentReferenceLazyList${i}" class="docRef-div" <g:if test="${docRef?.toBeDeleted}">style="display:none;"</g:if>>
+
+        <td valign="top" class="value ${hasErrors(bean:docRef,field:'name','errors')}">
+            <g:hiddenField name="documentReferenceLazyList[${i}].toBeDeleted" value="${docRef?.toBeDeleted}"/>
+            <g:hiddenField name='documentReferenceLazyList[${i}].isNew' value="${docRef?.id == null?'true':'false'}"/>
+            <g:textArea name="documentReferenceLazyList[${i}].name"
+                                    value="${docRef?.name}"
+                                    style="width:100%;height:auto;"
+                                    rows="2"
+                                    cols="25"/>
+        </td>
+
+        <td valign="top" class="value ${hasErrors(bean:docRef,field:'location','errors')}">
+            <g:textArea name="documentReferenceLazyList[${i}].location"
+                                    value="${docRef?.location}"
+                                    style="width:100%;height:auto;"
+                                    rows="2"
+                                    cols="25"/>
+        </td>
+
+        <td>
+            <span class="del-docRef">
+                <img src="${resource(dir:'images/skin', file:'database_delete.png')}" />
+            </span>
+        </td>
+    </tr>
Index: branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_documentReferences.gsp
===================================================================
--- branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_documentReferences.gsp	(revision 793)
+++ branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_documentReferences.gsp	(revision 793)
@@ -0,0 +1,62 @@
+<script type="text/javascript">
+    var docRef_childCount = ${taskProcedureInstance?.documentReferences.size()} + 0;
+    var docRef_wrapperId = "docRef_wrapper";
+    var docRef_cloneId = "documentReferenceLazyList_clone";
+    var docRef_lazyList = "documentReferenceLazyList";
+    var docRef_fields = ["toBeDeleted", "isNew", "name", "location"];
+    var docRef_focusField = "name";
+
+    // Click event on add button.
+    jQuery('.add-docRef').live('click', function() {
+        addChild(docRef_wrapperId, docRef_cloneId, docRef_lazyList, docRef_fields, docRef_focusField, docRef_childCount);
+        docRef_childCount++;
+    });
+
+    // Click event on delete buttons.
+    jQuery('.del-docRef').live('click', function() {
+        //find the parent div
+        var prnt = jQuery(this).parents(".docRef-div");
+        //find the deleted hidden input
+        var delInput = prnt.find("input[id$=toBeDeleted]");
+        //check if this is still not persisted
+        var newValue = prnt.find("input[id$=isNew]").attr('value');
+        //if it is new then i can safely remove from dom
+        if(newValue == 'true'){
+            prnt.remove();
+        }else{
+            //set the deletedFlag to true
+            delInput.attr('value','true');
+            //hide the div
+            prnt.hide();
+        }
+    });
+
+</script>
+
+    <div>
+        <table>
+            <thead>
+                <tr>
+
+                    <th>Document Reference</th>
+                    <th>Location</th>
+                    <th></th>
+
+                </tr>
+            </thead>
+            <tbody id="docRef_wrapper">
+                <g:each var="docRef" in="${taskProcedureInstance.documentReferences}" status="i">
+                        <g:render template="documentReference" model="['docRef': docRef,
+                                                                                                                    'i':i]" />
+                </g:each>
+            </tbody>
+        </table>
+    </div>
+
+    <br />
+
+    <div style="text-align:right;">
+        <span class="buttons add-docRef">
+            <input type="button" class="add" value="Add Document Ref" />
+        </span>
+    </div>
Index: branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp
===================================================================
--- branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp	(revision 792)
+++ branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/_taskProcedure.gsp	(revision 793)
@@ -62,4 +62,7 @@
 
     <br />
+    <g:render template="documentReferences" model="['taskProcedureInstance': taskProcedureInstance]" />
+
+    <br />
     <g:render template="maintenanceActions" model="['taskProcedureInstance': taskProcedureInstance,
                                                                                         'assemblies': assemblies]" />
Index: branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/create.gsp
===================================================================
--- branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/create.gsp	(revision 792)
+++ branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/create.gsp	(revision 793)
@@ -33,4 +33,8 @@
         </div>
         <table style="display:none;">
+            <g:render template="documentReference" model="['docRef': null,
+                                                                                                        'i': '_clone']" />
+        </table>
+        <table style="display:none;">
             <g:render template="maintenanceAction" model="['tp': null,
                                                                                                 'ma': null,
Index: branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/edit.gsp
===================================================================
--- branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/edit.gsp	(revision 792)
+++ branches/features/taskProcedureRework/grails-app/views/taskProcedureDetailed/edit.gsp	(revision 793)
@@ -36,4 +36,8 @@
         </div>
         <table style="display:none;">
+            <g:render template="documentReference" model="['docRef': null,
+                                                                                                        'i': '_clone']" />
+        </table>
+        <table style="display:none;">
             <g:render template="maintenanceAction" model="['tp': null,
                                                                                                 'ma': null,
