diff --git a/README.md b/README.md
index 9da5176fb2..f323364d1d 100644
--- a/README.md
+++ b/README.md
@@ -176,3 +176,4 @@ https://docs.google.com/document/d/1oXQ2mNojyDFkY_x4RBRPaqS-xhpnDE9coQnbmI3Pobw/
 Please read the <a href="https://github.com/openMF/community-app/blob/develop/Contributing.md" >contribution guidelines</a>
 
 Note: This application will hit the demo server by default.
+
diff --git a/app/global-translations/locale-en.json b/app/global-translations/locale-en.json
index 5570d54651..04f87404f1 100644
--- a/app/global-translations/locale-en.json
+++ b/app/global-translations/locale-en.json
@@ -79,6 +79,7 @@
   "label.heading.recurringaccoverview": "Recurring Deposits Overview",
   "label.heading.members": "Members",
   "label.heading.confirm": "Confirm",
+  "are.you.sure": "Are you sure you want to ",
   "label.confirm.group.transfer": "Confirm Group Transfer",
   "label.heading.attendance": "Attendance",
   "label.heading.comments": "Comments",
@@ -104,6 +105,20 @@
   "label.heading.user": "User",
   "label.heading.loan": "Loan",
   "label.input.paidloans": "Paid Loans",
+  "label.input.othernames": "Other Names",
+  "label.input.maidenname": "Maiden/Married Name",
+  "label.input.groupno": "Group Number",
+  "label.input.groupmember": "Group Member",
+  "label.input.statusingroup": "Status In Group",
+  "label.input.retirementreason": "Retirement Reason",
+  "label.input.civilstatus": "Civil Status",
+  "label.input.education": "Education",
+  "label.input.ethinicity": "Ethinicity",
+  "label.input.nationality": "Nationality",
+  "label.input.languages": "Languages",
+  "label.input.economicsector": "Economic Sector",
+  "label.input.economicactivity": "Economic Activity",
+  "label.input.familyreference": "Family Reference",
   "label.heading.principal": "Principal",
   "label.heading.amount": "Amount",
   "label.heading.date": "Date",
@@ -209,6 +224,7 @@
   "label.heading.createdby": "Created By",
   "label.heading.campaign": "Campaign",
   "label.heading.isactive": "Status",
+  "label.heading.noactiveloans": "No Active Loans found for this client",
   "#Menu Links": "..",
   "label.menu.selectloanofficer": "Select Staff",
   "label.menu.selectone": "Select One",
@@ -276,6 +292,9 @@
   "label.input.closuredate": "Closure date",
   "label.input.closurereason": "Closure reason",
   "label.input.description": "Description",
+  "label.input.observations": "Observations",
+  "label.input.document.purpose": "Document Purpose",
+  "label.heading.contact.information": "Contact Information",
   "label.input.repeat": "Repeat",
   "label.input.comments": "Comments",
   "label.input.closurereasons": "Closure reasons",
@@ -393,6 +412,26 @@
   "label.button.postdividends": "Post Dividends",
   "label.button.proceed": "Proceed",
   "label.button.addAddress": "Add Address",
+  "label.button.hardpolicychecklist": "Hard Policy Checklist",
+  "label.heading.hardpolicychecklist": "Hard Policy Checklist",
+  "label.heading.clientshardpolicychecklist": "Clients Hard Policy Checklist",
+  "label.button.createhardpolicychecklist": "Create Checklist",
+  "label.button.edithardpolicychecklist": "Edit Checklist",
+  "label.heading.newclientcategorization": "New Client Categorization",
+  "label.heading.recurringcustomercategorization": "Recurring Customer Categorization",
+  "label.heading.mandatoryphotograph": "Mandatory Photographs",
+  "label.heading.clientage": "Client Age",
+  "label.heading.noOfMembersAccordingToPolicy": "No. Of Members According To Policy",
+  "label.heading.minAndMaxAmount": "Minimum and Maximum Amount",
+  "label.heading.disparityOfValues": "Disparity of Values",
+  "label.heading.percentageOfMembersStartingBusiness": "% Of Members Starting Business",
+  "label.heading.percentageOfMembersWithTheirOwnHome": "% Of Members with their own home",
+  "label.heading.chairmanOfTheBCBoardOfDirectors": "Chairman of The BC Board Of Directors",
+  "label.heading.overallCondition": "Overall Condition",
+  "label.heading.categoriesOfClientToAccept": "Categories of Clients to Accept",
+  "label.heading.requestedAmount": "Requested Amount",
+  "label.heading.addEndorsement": "Add Endorsement",
+  "label.heading.paymentsOutsideCurrentTerm": "Payments Outside Current Term",
   "#Misc Labels": "..",
   "label.uniquelyidentifiedwithid": "Uniquely identified with ID",
   "label.belongsto": "Belongs To",
@@ -732,6 +771,7 @@
   "label.heading.clientclosed": "Client Closed",
   "label.heading.clientrejected": "Client Rejected",
   "label.heading.withdrawn": "Client Withdrawn",
+  "label.heading.creditrestructure": "Credit Restructuring",
   "#Anchors": "..",
   "label.anchor.clients": "Clients",
   "label.anchor.createclient": "Create Client",
@@ -756,7 +796,8 @@
   "label.input.selectexcelfile": "Select Excel file",
   "label.input.documenttype": "Document Type",
   "label.input.uniqueidentification": "Unique ID Number",
-  "label.input.mobilenumber": "Mobile number",
+  "label.input.mobilenumber": "Cell Phone",
+  "label.input.homeNumber": "Home Phone",
   "label.input.client.activationdate": "Activation date",
   "label.input.client.creationdate": "Creation date",
   "label.input.rejectiondate": "Rejection date",
@@ -2345,6 +2386,9 @@
   "savingsAccountStatusType.invalid": "Invalid status",
   "savingsAccountStatusType.submitted.and.pending.approval": "Submitted and pending approval",
   "savingsAccountStatusType.approved": "Approved",
+  "restructure.status.approved": "Approved",
+  "restructure.status.rejected": "Rejected",
+  "restructure.status.pending": "Pending",
   "savingsAccountStatusType.active": "Active",
   "savingsAccountStatusType.withdrawn.by.applicant": "Withdrawn by applicant",
   "savingsAccountStatusType.rejected": "Rejected",
@@ -3872,6 +3916,7 @@
   "label.input.multidisburseloan": "Enable Multiple Disbursals",
   "label.input.maxtranchecount": "Maximum Tranche count",
   "label.input.outstandingloanbalance": "Maximum allowed outstanding balance",
+  "label.input.outstandingloanbalance": "Maximum allowed outstanding balance",
   "validation.msg.loanproduct.interestType.not.equal.to.specified.number": "Flat interest type is not allowed for multi disburse loan ",
   "validation.msg.loanproduct.outstandingLoanBalance.not.zero.or.greater": "Max outstanding balance must be a positive Amount",
   "validation.msg.loanproduct.maxTrancheCount.cannot.be.blank": "Tranche count must be provided",
@@ -4609,5 +4654,53 @@
   "label.heading.loanTotalRepayment": "Paid",
   "label.heading.loanTotalOverdue": "Overdue",
   "label.heading.groupNumberOfClients": "Customers",
+  "label.heading.portfolioHeader": "Portfolio: ",
+  "label.heading.agencyName": "Agency",
+  "label.heading.portfolioplanning": "Portfolio Planning",
+  "label.heading.planningDate": "Date",
+  "label.heading.planningDay": "Day",
+  "label.heading.meetingStartTime": "Hour",
+  "label.heading.portfolioCenter": "Center",
+  "label.heading.centerGroupId": "Group No.",
+  "label.heading.centerGroupName": "Group Name",
+  "label.button.searchPlanning": "Search planning",
+  "label.input.client.area": "Area",
+  "label.input.client.publicservice": "Type of public services",
+  "label.input.client.municipal": "Municipality",
+  "label.input.client.housingtype": "Housing Type",
+  "label.input.client.department": "Department",
+  "label.input.residenceYears": "Years of living in the current residence",
+  "label.input.communityYears": "Years of living in the Community",
+  "label.input.village": "Village",
+  "label.input.referencedata": "Reference Housing Data",
+  "label.input.street": "Street",
+  "label.input.avenue": "Avenue",
+  "label.input.houseNumber": "House Number",
+  "label.input.colony": "Colony",
+  "label.input.sector": "Sector",
+  "label.input.batch": "Batch",
+  "label.input.square": "Square",
+  "label.input.zone": "Zone",
+  "label.input.lightDeviceNumber": "Light Device Number",
+  "error.msg.loan.existing.active.loan.product": "This loan could not be disbursed as this client or group already has an active loan for the product `{{params[0].value}}`.",
+  "label.button.futurepayment": "Future Payment",
+  "label.heading.loan.futurepayments": "Loan Future Payments",
+  "label.anchor.futurepayment": "Future Payments",
+  "label.input.partialPayment": "Partial",
+  "label.input.fullPayment": "Full",
+  "label.button.process": "Process",
+  "label.input.bank.agreements": "Bank agreements",
+  "label.anchor.futurepayment.details": "Details of payment simulation",
+  "label.heading.futurepayment.code": "Payment code",
+  "label.heading.futurepayment.principal": "Principal",
+  "label.heading.futurepayment.interest": "Interest",
+  "label.heading.futurepayment.lateinterest": "Late interest",
+  "label.heading.futurepayment.totalamount": "Total",
+  "label.heading.futurepayment.availableguarantee": "Available guarantee",
+  "label.heading.futurepayment.bank": "Bank",
+  "label.heading.futurepayment.agreement": "Agreement",
+  "label.heading.prequalification.validation.result": "Group Hard Policies Validation Result",
+  "label.heading.hard.policy.status": "Hard Policy",
+  "label.input.streetNumber": "Street No.",
   "----End---": "--End of file--- "
 }
diff --git a/app/global-translations/locale-es.json b/app/global-translations/locale-es.json
index 323be3eaca..c533e4dee7 100644
--- a/app/global-translations/locale-es.json
+++ b/app/global-translations/locale-es.json
@@ -220,6 +220,7 @@
 	"label.heading.createdby": "Creado por",
 	"label.heading.campaign": "Campaña",
 	"label.heading.isactive": "Estado",
+	"label.heading.noactiveloans": "No se encontraron préstamos activos para este cliente",
 	"label.menu.selectloanofficer": "Seleccione personal",
 	"label.menu.selectone": "Seleccione uno",
 	"label.menu.constitution": "Seleccione Constitución",
@@ -240,8 +241,8 @@
 	"label.anchor.importoffices": "Oficinas",
 	"label.anchor.editpermissions": "Editar permisos",
 	"label.input.name": "Nombre",
-	"label.input.firstname": "Nombre",
-	"label.input.lastname": "Apellido(s)",
+	"label.input.firstname": "1er Nombre",
+	"label.input.lastname": "2do Nombre",
 	"label.input.middlename": "2.º nombre:",
 	"label.input.fathername": "Nombre de padre",
 	"label.input.qualification": "Calificación",
@@ -270,6 +271,7 @@
 	"label.input.closuredate": "Fecha de cierre",
 	"label.input.closurereason": "Motivo de cierre",
 	"label.input.description": "Descripción",
+	"label.input.observations": "Observacaiones",
 	"label.input.repeat": "Repetir",
 	"label.input.comments": "Comentarios",
 	"label.input.closurereasons": "Motivos de cierre",
@@ -375,6 +377,8 @@
 	"label.button.postdividends": "Post Dividendos",
 	"label.button.proceed": "Continuar",
 	"label.button.addAddress": "Agregar dirección",
+	"label.button.hardpolicychecklist": "Check list de políticas duras",
+	"label.heading.hardpolicychecklist": "Check list de políticas duras",
 	"label.uniquelyidentifiedwithid": "Exclusivamente identificado con Id",
 	"label.belongsto": "Pertenece a",
 	"label.memberof": "Miembro de",
@@ -565,6 +569,7 @@
 	"label.heading.primaryemail": "Correo electrónico principal",
 	"label.heading.categoryname": "Nombre de la categoría",
 	"label.heading.contract": "Contrato",
+	"label.heading.creditrestructure": "Reestructuras de Créditos",
 	"label.menu.office": "Oficina",
 	"label.anchor.startpage": "Página de inicio",
 	"label.anchor.homepage": "Página principal",
@@ -1452,6 +1457,7 @@
 	"label.input.mobile": "Móvil",
 	"label.input.residence": "Residencia",
 	"label.input.purpose": "Propósito",
+	"label.input.document.purpose": "Finalidad del documento",
 	"label.input.syncrepaymentswithmeeting": "Sincronizar reembolsos con la reunión",
 	"label.input.syncdisbursementdatewithmeeting": "Sincronizar fecha de desembolso con la reunión",
 	"label.input.loanterm": "Plazo del préstamo",
@@ -1980,6 +1986,21 @@
 	"label.input.dividendperiodenddate": "Dividendo Fecha De Inicio Del Período",
 	"label.input.dividendamount": "Cantidad de dividendo",
 	"label.input.todaysprice": "Hoy  Precio",
+	"label.input.familyreference": "Refencia Familiar",
+	"label.input.loancycle": "Ciclo de Préstamo",
+	"label.input.othernames": "otros nombres",
+	"label.input.maidenname": "Apellido de casada",
+	"label.input.groupno": "Grupo No.",
+	"label.input.groupmember": "Miembro de Grupo",
+	"label.input.statusingroup": "Estado Miembro de Grupo",
+	"label.input.retirementreason": "Razón de Retiro",
+	"label.input.civilstatus": "Estado Civil",
+	"label.input.education": "Educación",
+	"label.input.ethinicity": "Etnicidad",
+	"label.input.nationality": "Nacionalidad",
+	"label.input.languages": "Idioma(s)",
+	"label.input.economicsector": "Sector Economico",
+	"label.input.economicactivity": "Actividad Economica",
 	"label.button.undo": "Deshacer",
 	"label.button.modifyapplication": "Modificar solicitud",
 	"label.button.withdrawnbyclient": "Retirado por el cliente",
@@ -2162,6 +2183,10 @@
 	"savingsAccountStatusType.invalid": "Estado no válido",
 	"savingsAccountStatusType.submitted.and.pending.approval": "Presentado y pendiente de aprobación",
 	"savingsAccountStatusType.approved": "Aprobado",
+	"restructure.status.approved": "Aprobado",
+	"restructure.status.rejected": "Rechazado",
+	"restructure.status.pending": "Pendiente",
+	"are.you.sure": "Estás seguro que quieres ",
 	"savingsAccountStatusType.active": "Activo",
 	"savingsAccountStatusType.withdrawn.by.applicant": "Retirado por solicitante",
 	"savingsAccountStatusType.rejected": "Rechazado",
@@ -2640,7 +2665,7 @@
 	"Customer Identifier": "Identificador de cliente",
 	"LoanCollateral": "Garantía del préstamo",
 	"LoanPurpose": "Propósito del préstamo",
-	"Gender": "Sexo",
+	"Gender": "Género",
 	"YesNo": "Sí o no",
 	"GuarantorRelationship": "Relación de garante",
 	"AssetAccountTags": "Etiquetas de activos de cuenta",
@@ -4292,5 +4317,25 @@
 	"label.heading.loanTotalRepayment": "A Cobrar",
 	"label.heading.loanTotalOverdue": "Mora",
 	"label.heading.groupNumberOfClients": "Clientes",
+	"label.heading.prequalification.validation.result": "Resultado de validación de Politicas Duras Grupal",
+	"label.heading.hard.policy.status": "Politica Dura",
+	"label.input.residenceYears": "Años de residir vivienda actual",
+	"label.input.communityYears": "Años de vivir en la Comunidad",
+	"label.input.client.area": "Vive en área",
+	"label.input.client.housingtype": "Tipo de vivienda",
+	"label.input.client.publicservice": "Tipo de servicios públicos",
+	"label.input.client.department": "Departamento",
+	"label.input.client.municipal": "Municipio",
+	"label.input.village": "Aldea o Cantón",
+	"label.input.referencedata": "Datos de referencia para localizar la vivienda",
+	"label.input.avenue": "Avenida",
+	"label.input.streetNumber": "No. De casa",
+	"label.input.colony": "Colonia",
+	"label.input.sector": "Sector",
+	"label.input.batch": "Lote",
+	"label.input.square": "Manzana",
+	"label.input.zone": "Zona",
+	"label.input.lightDeviceNumber": "No. Contador Luz",
+	"label.heading.contact.information": "Datos de Contacto",
 	"----End---": "---Fin del archivo---"
 }
diff --git a/app/scripts/controllers/client/ClientDocumentController.js b/app/scripts/controllers/client/ClientDocumentController.js
index fa7b792aa1..3aeb9bf9a3 100644
--- a/app/scripts/controllers/client/ClientDocumentController.js
+++ b/app/scripts/controllers/client/ClientDocumentController.js
@@ -1,15 +1,19 @@
 (function (module) {
     mifosX.controllers = _.extend(module, {
-        ClientDocumentController: function (scope, location, resourceFactory, http, routeParams, API_VERSION, Upload, $rootScope) {
+        ClientDocumentController: function (scope, location, resourceFactory, http, routeParams,dateFilter, API_VERSION, Upload, $rootScope) {
             scope.clientId = routeParams.clientId;
             scope.onFileSelect = function (files) {
                 scope.formData.file = files[0];
             };
 
             scope.submit = function () {
+                let dateCreated = dateFilter(scope.formData.dateCreated, scope.df);
+
                 Upload.upload({
                     url: $rootScope.hostUrl + API_VERSION + '/clients/' + scope.clientId + '/documents',
-                    data: { name : scope.formData.name, description : scope.formData.description, file: scope.formData.file},
+                    data: { name : scope.formData.name, description : scope.formData.description, file: scope.formData.file,
+                        documentType: scope.formData.documentType,documentPurpose: scope.formData.documentPurpose,
+                        dateCreated: dateCreated, locale : scope.optlang.code, dateFormat : scope.df},
                 }).then(function (data) {
                         // to fix IE not refreshing the model
                         if (!scope.$$phase) {
@@ -19,12 +23,19 @@
                     });
             };
 
+            resourceFactory.codeValueNameResource.getAllCodeValues({codeName: "Document Type"}, function (data) {
+                scope.documentTypes = data;
+            });
+
+            resourceFactory.codeValueNameResource.getAllCodeValues({codeName: "Document Purpose"}, function (data) {
+                scope.documentPurposes = data;
+            });
             resourceFactory.codeValueResource.getAllCodeValues({codeId: 34}, function (data) {
-                scope.documenttypes = data;
+                scope.allowedDocumentTypes = data;
             });
         }
     });
-    mifosX.ng.application.controller('ClientDocumentController', ['$scope', '$location', 'ResourceFactory', '$http', '$routeParams', 'API_VERSION', 'Upload', '$rootScope', mifosX.controllers.ClientDocumentController]).run(function ($log) {
+    mifosX.ng.application.controller('ClientDocumentController', ['$scope', '$location', 'ResourceFactory', '$http', '$routeParams','dateFilter', 'API_VERSION', 'Upload', '$rootScope', mifosX.controllers.ClientDocumentController]).run(function ($log) {
         $log.info("ClientDocumentController initialized");
     });
 }(mifosX.controllers || {}));
diff --git a/app/scripts/controllers/client/CreateClientController.js b/app/scripts/controllers/client/CreateClientController.js
index b44b01da57..cb9981fae1 100755
--- a/app/scripts/controllers/client/CreateClientController.js
+++ b/app/scripts/controllers/client/CreateClientController.js
@@ -28,6 +28,8 @@
             scope.formData.address=[];
             //familymembers
             scope.formData.familyMembers=[];
+            scope.formData.residenceYears = 0;
+            scope.formData.communityYears = 0;
             scope.familyArray=[];
             scope.datatables = [];
             scope.noOfTabs = 1;
@@ -55,6 +57,22 @@
                 scope.clientNonPersonConstitutionOptions = data.clientNonPersonConstitutionOptions;
                 scope.clientNonPersonMainBusinessLineOptions = data.clientNonPersonMainBusinessLineOptions;
                 scope.clientLegalFormOptions = data.clientLegalFormOptions;
+                scope.clientAreaOptions = data.clientAreaOptions;
+                scope.publicServiceOptions = data.publicServiceOptions;
+                scope.housingTypeOptions = data.housingTypeOptions;
+                scope.departamentoOptions = data.departamentoOptions;
+                scope.municipioOptions = data.municipioOptions;
+                scope.economicSectorOptions = data.economicSectorData;
+                scope.economicActivities = data.economicActivityData;
+                scope.formData.publicServices = [];
+                scope.publicServiceChecks = {};
+                 for (var i = 0; i < scope.publicServiceOptions.length; i++) {
+                    scope.publicServiceChecks[scope.publicServiceOptions[i].id] = false;
+                    scope.formData.publicServices.push({
+                        id: scope.publicServiceOptions[i].id,
+                        checked: false
+                    });
+                }
                 scope.datatables = data.datatables;
                 if (!_.isUndefined(scope.datatables) && scope.datatables.length > 0) {
                     scope.noOfTabs = scope.datatables.length + 1;
@@ -123,17 +141,21 @@
 
 
                 }
-
-
                 scope.relationshipIdOptions=data.familyMemberOptions.relationshipIdOptions;
                 scope.genderIdOptions=data.familyMemberOptions.genderIdOptions;
                 scope.maritalStatusIdOptions=data.familyMemberOptions.maritalStatusIdOptions;
                 scope.professionIdOptions=data.familyMemberOptions.professionIdOptions;
-
-
-
             });
 
+            scope.checkPublicService = function(serviceId){
+                for (var i = 0; i < scope.formData.publicServices.length; i++) {
+                    if(serviceId == scope.formData.publicServices[i].id){
+                        scope.formData.publicServices[i].checked = scope.publicServiceChecks[serviceId];
+                         break;
+                    }
+                 }
+            }
+
             scope.updateColumnHeaders = function(columnHeaderData) {
                 var colName = columnHeaderData[0].columnName;
                 if (colName == 'id') {
@@ -198,6 +220,13 @@
                 });
             };
 
+            scope.updateActivities = function () {
+                scope.formData.economicActivity = null;
+                scope.economicActivityOptions = scope.economicActivities.filter(function (economicActivity) {
+                    return economicActivity.sectorId == scope.formData.economicSector;
+                });
+            };
+
             scope.setChoice = function () {
                 if (this.formData.active) {
                     scope.choice = 1;
diff --git a/app/scripts/controllers/client/EditClientController.js b/app/scripts/controllers/client/EditClientController.js
index ef7629eb53..3febaf2941 100755
--- a/app/scripts/controllers/client/EditClientController.js
+++ b/app/scripts/controllers/client/EditClientController.js
@@ -41,6 +41,90 @@
                         remarks: data.clientNonPersonDetails.remarks
                     }
                 };
+                scope.clientAreaOptions = data.clientAreaOptions;
+                scope.publicServiceOptions = data.publicServiceOptions;
+                scope.housingTypeOptions = data.housingTypeOptions;
+                scope.departamentoOptions = data.departamentoOptions;
+                scope.municipioOptions = data.municipioOptions;
+                scope.formData.publicServices = [];
+                scope.publicServiceChecks = {};
+                scope.publicServiceTypes = [];
+                scope.economicSectorOptions = data.economicSectorData;
+                scope.economicActivities = data.economicActivityData;
+
+                var detailData = data.detailData;
+                if(detailData){
+                    scope.formData = {...scope.formData, ...detailData};
+                    if (detailData.economicSector) {
+                        scope.formData.economicSector = Number(detailData.economicSector);
+                        scope.updateActivities();
+                        scope.formData.economicActivity = Number(detailData.economicActivity);
+                    }
+                }
+
+
+
+
+
+                var contactInformation = data.clientContactInformation;
+                if(contactInformation){
+                    scope.formData.residenceYears = contactInformation.yearsOfResidence;
+                    scope.formData.communityYears = contactInformation.communityYears;
+                    scope.formData.village = contactInformation.village;
+                    scope.formData.homeNumber = contactInformation.homePhone;
+                    scope.formData.lightDeviceNumber = contactInformation.lightMeterNumber;
+                    scope.formData.zone = contactInformation.zone;
+                    scope.formData.square = contactInformation.square;
+                    scope.formData.colony = contactInformation.colony;
+                    scope.formData.streetNumber = contactInformation.streetNumber;
+                    scope.formData.avenue = contactInformation.avenue;
+                    scope.formData.street = contactInformation.street;
+                    scope.formData.sector = contactInformation.sector;
+                    scope.formData.batch = contactInformation.batch;
+                    scope.formData.referenceData = contactInformation.referenceHousingData;
+                    scope.publicServiceTypes = contactInformation.publicServiceTypes;
+                    for(var i = 0; i < scope.clientAreaOptions.length; i++){
+                        if(contactInformation.area === scope.clientAreaOptions[i].name){
+                            scope.formData.clientArea = scope.clientAreaOptions[i].id
+                            break;
+                        }
+                    }
+
+                   for(var i = 0; i < scope.departamentoOptions.length; i++){
+                        if(contactInformation.department === scope.departamentoOptions[i].name){
+                            scope.formData.departmentId = scope.departamentoOptions[i].id
+                            break;
+                        }
+                    }
+
+                   for(var i = 0; i < scope.housingTypeOptions.length; i++){
+                        if(contactInformation.housingType === scope.housingTypeOptions[i].name){
+                            scope.formData.housingTypeId = scope.housingTypeOptions[i].id
+                            break;
+                        }
+                    }
+
+                   for(var i = 0; i < scope.municipioOptions.length; i++){
+                        if(contactInformation.municipality === scope.municipioOptions[i].name){
+                            scope.formData.municipalId = scope.municipioOptions[i].id
+                            break;
+                        }
+                    }
+                }
+                for (var i = 0; i < scope.publicServiceOptions.length; i++) {
+                    var serviceId = scope.publicServiceOptions[i].id;
+                    var checked = false;
+                    for (var j = 0; j < scope.publicServiceTypes.length; j++){
+                            if(scope.publicServiceTypes[j].id === serviceId){
+                                   checked = true;
+                            }
+                    }
+                    scope.publicServiceChecks[serviceId] = checked;
+                    scope.formData.publicServices.push({
+                        id: scope.publicServiceOptions[i].id,
+                        checked: checked
+                    });
+                }
 
                 if(data.gender){
                     scope.formData.genderId = data.gender.id;
@@ -99,6 +183,15 @@
 
             });
 
+            scope.checkPublicService = function(serviceId){
+                for (var i = 0; i < scope.formData.publicServices.length; i++) {
+                    if(serviceId == scope.formData.publicServices[i].id){
+                        scope.formData.publicServices[i].checked = scope.publicServiceChecks[serviceId];
+                         break;
+                    }
+                 }
+            }
+
             scope.displayPersonOrNonPersonOptions = function (legalFormId) {
                 if(legalFormId == scope.clientPersonId || legalFormId == null) {
                     scope.showNonPersonOptions = false;
@@ -107,6 +200,14 @@
                 }
             };
 
+            scope.updateActivities = function () {
+                scope.formData.economicActivity = null;
+                console.log("updateActivities: " + scope.formData.economicSector);
+                scope.economicActivityOptions = scope.economicActivities.filter(function (economicActivity) {
+                    return economicActivity.sectorId == scope.formData.economicSector;
+                });
+            };
+
             scope.submit = function () {
                 this.formData.locale = scope.optlang.code;
                 this.formData.dateFormat = scope.df;
diff --git a/app/scripts/controllers/client/ViewClientController.js b/app/scripts/controllers/client/ViewClientController.js
index 3f50da6c5f..5e6195ee0e 100644
--- a/app/scripts/controllers/client/ViewClientController.js
+++ b/app/scripts/controllers/client/ViewClientController.js
@@ -16,6 +16,7 @@
             scope.showRecurring = false;
             scope.updateDefaultSavings = false;
             scope.charges = [];
+            scope.clientContactInformation = null;
             scope.legalform = 'm_client';
 
             scope.collaterals = [];
@@ -176,6 +177,8 @@
             scope.haveFile = [];
             resourceFactory.clientResource.get({clientId: routeParams.id}, function (data) {
                 scope.client = data;
+                scope.clientContactInformation = data.clientContactInformation;
+                scope.detailData = data.detailData;
                 scope.collaterals = scope.client.clientCollateralManagements;
                 scope.collateralSize = scope.collaterals.length;
                 scope.isClosedClient = scope.client.status.value == 'Closed';
diff --git a/app/scripts/controllers/hardpolicychecklist/ViewHardPolicyChecklistController.js b/app/scripts/controllers/hardpolicychecklist/ViewHardPolicyChecklistController.js
new file mode 100644
index 0000000000..91a6eed226
--- /dev/null
+++ b/app/scripts/controllers/hardpolicychecklist/ViewHardPolicyChecklistController.js
@@ -0,0 +1,28 @@
+(function (module) {
+    mifosX.controllers = _.extend(module, {
+        ViewHardPolicyChecklistController: function (scope, routeParams, route, dateFilter, location, resourceFactory, http, $uibModal, API_VERSION, $timeout, $rootScope, Upload) {
+            scope.prequalificationNumber;
+            scope.groupId = routeParams.groupId;
+            scope.checklist = [];
+            scope.tf = "HH:mm";
+            scope.showChecklistTable = true;
+
+            resourceFactory.groupResource.get({groupId: routeParams.groupId, associations: 'all'}, function (data) {
+
+            });
+
+            scope.fetchClientChecklists = function () {
+                var items = resourceFactory.prequalificationChecklistResource.get({
+                    prequalificationId: scope.routeParams.groupId
+                }, function (data) {
+                    scope.checklist = data;
+                });
+            }
+
+        }
+    });
+
+    mifosX.ng.application.controller('ViewHardPolicyChecklistController', ['$scope', '$routeParams', '$route', 'dateFilter', '$location', 'ResourceFactory', '$http', '$uibModal', 'API_VERSION', '$timeout', '$rootScope', 'Upload', mifosX.controllers.ViewHardPolicyChecklistController]).run(function ($log) {
+        $log.info("ViewHardPolicyChecklistController initialized");
+    });
+}(mifosX.controllers || {}));
diff --git a/app/scripts/controllers/loanAccount/LoanFuturePaymentController.js b/app/scripts/controllers/loanAccount/LoanFuturePaymentController.js
new file mode 100644
index 0000000000..1989aca999
--- /dev/null
+++ b/app/scripts/controllers/loanAccount/LoanFuturePaymentController.js
@@ -0,0 +1,39 @@
+(function (module) {
+    mifosX.controllers = _.extend(module, {
+        LoanFuturePaymentController: function (scope, routeParams, resourceFactory, location, route, http, $uibModal, dateFilter, $filter) {
+            scope.accountId = routeParams.id;
+            scope.formData = {};
+            scope.formData.loanId = scope.accountId;
+            scope.taskTypeName = 'Future Payment';
+            scope.subTaskTypeName = 'Futurepayment';
+            scope.formData.paymentDate = new Date();
+            scope.formData.paymentType = 'partial';
+            scope.restrictDate = new Date();
+
+            resourceFactory.LoanAccountResource.getLoanAccountDetails({loanId: routeParams.id, associations: 'all'}, function (data) {
+                scope.loandetails = data;
+                scope.restrictDate = new Date(data.timeline.expectedMaturityDate);
+            });
+
+            scope.simulatePayment = function() {
+                resourceFactory.loanTrxnsSimulatePaymentResource.get({
+                    loanId: routeParams.id,
+                    command: 'futurepayment',
+                    paymentDate: dateFilter(this.formData.paymentDate, scope.df),
+                    paymentType: this.formData.paymentType,
+                    dateFormat: scope.df,
+                    locale: scope.optlang.code
+                }, function (data) {
+                    scope.simulationPaymentData = data;
+                });
+            }
+
+            scope.cancel = function () {
+                location.path('/viewloanaccount/' + scope.accountId);
+            };
+        }
+    });
+    mifosX.ng.application.controller('LoanFuturePaymentController', ['$scope', '$routeParams', 'ResourceFactory', '$location', '$route', '$http', '$uibModal', 'dateFilter','$filter', mifosX.controllers.LoanFuturePaymentController]).run(function ($log) {
+        $log.info("LoanFuturePaymentController initialized");
+    });
+}(mifosX.controllers || {}));
\ No newline at end of file
diff --git a/app/scripts/controllers/loanAccount/RestructureCreditsController.js b/app/scripts/controllers/loanAccount/RestructureCreditsController.js
new file mode 100644
index 0000000000..0c6bf62474
--- /dev/null
+++ b/app/scripts/controllers/loanAccount/RestructureCreditsController.js
@@ -0,0 +1,250 @@
+(function (module) {
+    mifosX.controllers = _.extend(module, {
+        RestructureCreditsController: function (scope, resourceFactory, routeParams, location, dateFilter,$uibModal) {
+            scope.clientId = routeParams.clientId;
+            scope.formData = {};
+            scope.loandetails = {};
+            scope.inparams = {resourceType: 'template', activeOnly: 'true',clientId:routeParams.clientId};
+            scope.formData.clientId = routeParams.clientId;
+            scope.chargeFormData = {}; //For charges
+            scope.outstandingBalance=0;
+            scope.restructureData;
+            scope.product;
+
+            resourceFactory.restructurecreditsResource.template({clientId:scope.clientId,anotherResource:'template'},function(data){
+
+                scope.activeLoans = data.activeLoans;
+                scope.clientData = data.clientData;
+                scope.requestData = data.requestData;
+                scope.loanProductData = data.loanProductData;
+                if (data.requestData){
+                    scope.retrieveLoanProductTemplate(data.requestData);
+                }
+            });
+            scope.cancel = function () {
+                location.path('/viewclient/' + scope.clientId);
+            };
+            scope.computeTotalBalance = function () {
+                for (let i=0; i<scope.activeLoans.length; i++) {
+                    if (scope.activeLoans[i].selected){
+                        scope.outstandingBalance = scope.outstandingBalance+ Number(scope.activeLoans[i].summary.totalOutstanding)
+                    }
+                }
+
+            };
+
+            scope.retrieveLoanProductTemplate = function (requestData) {
+                scope.inparams.productId = requestData.productId;
+                scope.formData.productId = requestData.productId;
+                scope.inparams.templateType = 'individual';
+                scope.formData.loanType = 'individual';
+
+                scope.inparams.staffInSelectedOfficeOnly = true;
+
+                resourceFactory.loanResource.get(scope.inparams, function (data) {
+                    scope.loanaccountinfo = data;
+                    scope.product = data.product;
+
+                    scope.previewClientLoanAccInfo();
+                    scope.loandetails.interestValue = scope.loanaccountinfo.interestType.value;
+                    scope.loandetails.amortizationValue = scope.loanaccountinfo.amortizationType.value;
+                    scope.loandetails.interestCalculationPeriodValue = scope.loanaccountinfo.interestCalculationPeriodType.value;
+                    scope.loandetails.transactionProcessingStrategyValue = scope.formValue(scope.loanaccountinfo.transactionProcessingStrategyOptions, scope.formData.transactionProcessingStrategyId, 'id', 'name');
+                    scope.datatables = data.datatables;
+                    scope.handleDatatables(scope.datatables);
+                    scope.disabled = false;
+                });
+
+                resourceFactory.loanResource.get({
+                    resourceType: 'template',
+                    templateType: 'collateral',
+                    productId: requestData.productId,
+                    clientId: scope.clientId,
+                    fields: 'id,loanCollateralOptions'
+                }, function (data) {
+                    scope.collateralOptions = data.loanCollateralOptions || [];
+                });
+            };
+
+            scope.formValue = function (array, model, findattr, retAttr) {
+                findattr = findattr ? findattr : 'id';
+                retAttr = retAttr ? retAttr : 'value';
+                console.log("finding: "+findattr, retAttr, model);
+                return _.find(array, function (obj) {
+                    return obj[findattr] === model;
+                })[retAttr];
+            };
+
+            scope.handleDatatables = function (datatables) {
+                if (!_.isUndefined(datatables) && datatables.length > 0) {
+                    scope.formData.datatables = [];
+                    scope.formDat.datatables = [];
+                    scope.noOfTabs = datatables.length + 1;
+                    angular.forEach(datatables, function (datatable, index) {
+                        scope.updateColumnHeaders(datatable.columnHeaderData);
+                        angular.forEach(datatable.columnHeaderData, function (colHeader, i) {
+                            if (_.isEmpty(scope.formDat.datatables[index])) {
+                                scope.formDat.datatables[index] = {data: {}};
+                            }
+
+                            if (_.isEmpty(scope.formData.datatables[index])) {
+                                scope.formData.datatables[index] = {
+                                    registeredTableName: datatable.registeredTableName,
+                                    data: {locale: scope.optlang.code}
+                                };
+                            }
+
+                            if (datatable.columnHeaderData[i].columnDisplayType == 'DATETIME') {
+                                scope.formDat.datatables[index].data[datatable.columnHeaderData[i].columnName] = {};
+                            }
+                        });
+                    });
+                }
+            };
+
+
+
+            scope.resolveDateTime = function (dateTime) {
+                if (dateTime){
+                    let year = dateTime[0]
+                    let month = dateTime[1].toString().padStart(2,'0');
+                    let date = dateTime[2].toString().padStart(2,'0');
+                    let hour = dateTime[3].toString().padStart(2,'0');
+                    let minute = dateTime[4].toString().padStart(2,'0');
+                    let seconds = dateTime[5].toString().padStart(2,'0');
+                    return ""+ year +"-"+ month+"-"+ date+" "+ hour+":"+ minute+":"+ seconds;
+                }
+            };
+
+            scope.submit = function () {
+                console.log("selected loans: \n\n"+ JSON.stringify(scope.activeLoans))
+                let selectedLoans = []
+                for (let i=0; i<scope.activeLoans.length; i++){
+                    if (scope.activeLoans[i].selected){
+                        selectedLoans.push(scope.activeLoans[i].id)
+                    }
+                };
+
+                var disbursementDate = dateFilter(scope.formData.disbursementDate, scope.dft);
+
+
+                let formData = {
+                    ...this.formData,
+                    clientId:scope.clientId,
+                    selectedLoanIds: selectedLoans,
+                    disbursementDate: disbursementDate,
+                    outstandingBalance: scope.outstandingBalance,
+                    locale : scope.optlang.code,
+                    dateFormat: scope.dft
+                }
+
+                resourceFactory.restructurecreditsResource.save({clientId:scope.clientId},formData,function(data){
+                    location.path('/viewclient/' + scope.clientId);
+                });
+
+
+            };
+
+            scope.processRequest = function (action) {
+                scope.action = action;
+                $uibModal.open({
+                    templateUrl: 'processRequest.html',
+                    controller: ProcessRequestCtrl
+                });
+            }
+
+            var ProcessRequestCtrl = function ($scope, $uibModalInstance) {
+                $scope.action = scope.action;
+                scope.formData.principal = scope.requestData.totalLoanAmount;
+                $scope.processRequest = function () {
+                    let formData = {
+                        requestId:scope.requestData.id,
+                        transactionDate : dateFilter(new Date(), scope.df),
+                        notes : scope.requestData.comments,
+                        locale : scope.optlang.code,
+                        dateFormat: scope.df,
+                        loanData: scope.formData
+                    };
+
+                    console.log("final sending : "+ JSON.stringify(formData));
+
+                    resourceFactory.restructurecreditsResource.save({clientId:scope.clientId, anotherresource: scope.action}, formData, function (data) {
+                        $uibModalInstance.close('delete');
+                        location.path('/viewclient/' + scope.clientId);
+                    });
+                };
+                $scope.cancel = function () {
+                    $uibModalInstance.dismiss('cancel');
+                };
+            };
+
+            scope.previewClientLoanAccInfo = function () {
+                scope.previewRepayment = false;
+                scope.charges = scope.loanaccountinfo.charges || [];
+                scope.formData.disbursementData = scope.loanaccountinfo.disbursementDetails || [];
+                scope.collaterals = [];
+
+                if (scope.loanaccountinfo.calendarOptions) {
+                    scope.formData.syncRepaymentsWithMeeting = true;
+                    scope.formData.syncDisbursementWithMeeting = true;
+                }
+                scope.multiDisburseLoan = scope.loanaccountinfo.multiDisburseLoan;
+                scope.formData.productId = scope.loanaccountinfo.loanProductId;
+                scope.formData.fundId = scope.loanaccountinfo.fundId;
+                scope.formData.principal = scope.loanaccountinfo.principal;
+                scope.formData.loanTermFrequency = scope.loanaccountinfo.termFrequency;
+                scope.formData.loanTermFrequencyType = scope.loanaccountinfo.termPeriodFrequencyType.id;
+                scope.loandetails.loanTermFrequencyValue = scope.loanaccountinfo.termPeriodFrequencyType.value;
+                scope.formData.numberOfRepayments = scope.loanaccountinfo.numberOfRepayments;
+                scope.formData.repaymentEvery = scope.loanaccountinfo.repaymentEvery;
+                scope.formData.repaymentFrequencyType = scope.loanaccountinfo.repaymentFrequencyType.id;
+                scope.loandetails.repaymentFrequencyValue = scope.loanaccountinfo.repaymentFrequencyType.value;
+                scope.formData.interestRatePerPeriod = scope.loanaccountinfo.interestRatePerPeriod;
+                scope.formData.amortizationType = scope.loanaccountinfo.amortizationType.id;
+                scope.formData.fixedPrincipalPercentagePerInstallment = scope.loanaccountinfo.fixedPrincipalPercentagePerInstallment;
+                scope.formData.isEqualAmortization = scope.loanaccountinfo.isEqualAmortization;
+                scope.loandetails.amortizationValue = scope.loanaccountinfo.amortizationType.value;
+                scope.formData.interestType = scope.loanaccountinfo.interestType.id;
+                scope.loandetails.interestValue = scope.loanaccountinfo.interestType.value;
+                scope.formData.interestCalculationPeriodType = scope.loanaccountinfo.interestCalculationPeriodType.id;
+                scope.loandetails.interestCalculationPeriodValue = scope.loanaccountinfo.interestCalculationPeriodType.value;
+                scope.formData.allowPartialPeriodInterestCalcualtion = scope.loanaccountinfo.allowPartialPeriodInterestCalcualtion;
+                scope.formData.inArrearsTolerance = scope.loanaccountinfo.inArrearsTolerance;
+                scope.formData.graceOnPrincipalPayment = scope.loanaccountinfo.graceOnPrincipalPayment;
+                scope.formData.graceOnInterestPayment = scope.loanaccountinfo.graceOnInterestPayment;
+                scope.formData.graceOnArrearsAgeing = scope.loanaccountinfo.graceOnArrearsAgeing;
+                scope.formData.transactionProcessingStrategyId = scope.loanaccountinfo.transactionProcessingStrategyId;
+                scope.loandetails.transactionProcessingStrategyValue = scope.formValue(scope.loanaccountinfo.transactionProcessingStrategyOptions, scope.formData.transactionProcessingStrategyId, 'id', 'name');
+                scope.formData.graceOnInterestCharged = scope.loanaccountinfo.graceOnInterestCharged;
+                scope.formData.fixedEmiAmount = scope.loanaccountinfo.fixedEmiAmount;
+                scope.formData.maxOutstandingLoanBalance = scope.loanaccountinfo.maxOutstandingLoanBalance;
+
+                if (scope.loanaccountinfo.isInterestRecalculationEnabled && scope.loanaccountinfo.interestRecalculationData.recalculationRestFrequencyDate) {
+                    scope.date.recalculationRestFrequencyDate = new Date(scope.loanaccountinfo.interestRecalculationData.recalculationRestFrequencyDate);
+                }
+                if (scope.loanaccountinfo.isInterestRecalculationEnabled && scope.loanaccountinfo.interestRecalculationData.recalculationCompoundingFrequencyDate) {
+                    scope.date.recalculationCompoundingFrequencyDate = new Date(scope.loanaccountinfo.interestRecalculationData.recalculationCompoundingFrequencyDate);
+                }
+
+                if (scope.loanaccountinfo.isLoanProductLinkedToFloatingRate) {
+                    scope.formData.isFloatingInterestRate = false;
+                }
+
+                scope.loandetails = angular.copy(scope.formData);
+                // console.log("prods: \n\n"+ JSON.stringify(scope.products));
+                // scope.loandetails.productName = scope.formValue(scope.products, scope.formData.productId, 'id', 'name');
+                scope.formData.rates = scope.loanaccountinfo.product.rates;
+                if (scope.formData.rates && scope.formData.rates.length > 0) {
+                    scope.rateFlag = true;
+                }
+                scope.rateOptions = [];
+
+                console.log("form data to send: "+ JSON.stringify(scope.formData));
+            };
+
+        }
+    });
+    mifosX.ng.application.controller('RestructureCreditsController', ['$scope', 'ResourceFactory', '$routeParams', '$location', 'dateFilter','$uibModal', mifosX.controllers.RestructureCreditsController]).run(function ($log) {
+        $log.info("RestructureCreditsController initialized");
+    });
+}(mifosX.controllers || {}));
diff --git a/app/scripts/controllers/main/ExpertSearchController.js b/app/scripts/controllers/main/ExpertSearchController.js
index 098ae15669..e597ceb583 100644
--- a/app/scripts/controllers/main/ExpertSearchController.js
+++ b/app/scripts/controllers/main/ExpertSearchController.js
@@ -12,7 +12,9 @@
                                   'create user', 'employees', 'create employee', 'manage funds', 'offices', 'chart of accounts', 'frequent postings', 'Journal entry',
                                   'search transaction', 'account closure', 'accounting rules', 'add accounting rule', 'data tables', 'create data table', 'add code',
                                   'jobs', 'codes', 'reports', 'create report', 'holidays', 'create holiday', 'create charge', 'product mix', 'add member', 'add product mix',
-                                  'bulk loan reassignment', 'audit', 'create accounting closure', 'enter collection sheet', 'navigation', 'accounting', 'organization', 'system'];
+                                  'bulk loan reassignment', 'audit', 'create accounting closure', 'enter collection sheet', 'navigation', 'accounting', 'organization', 'system',
+                                  'Prequalification of Credits'
+                                  ];
             scope.search = function () {
 		      switch (this.formData.search) {
 		          case 'create client':
@@ -177,6 +179,9 @@
 		          case 'system users':
 		              location.path('/admin/users');
 		              break;
+                  case 'Prequalification of Credits':
+                       location.path('/prequalificationsmenu');
+                      break;
 		          default:
 		              location.path('/home');
 		      }
diff --git a/app/scripts/controllers/prequalification/EditGroupPrequalificatoinController.js b/app/scripts/controllers/prequalification/EditGroupPrequalificatoinController.js
new file mode 100644
index 0000000000..a98918a83c
--- /dev/null
+++ b/app/scripts/controllers/prequalification/EditGroupPrequalificatoinController.js
@@ -0,0 +1,207 @@
+(function (module) {
+    mifosX.controllers = _.extend(module, {
+        EditGroupPrequalificatoinController: function (scope, routeParams, route, dateFilter, location, resourceFactory, validationService, http, $uibModal, API_VERSION, $timeout, $rootScope, Upload) {
+
+            scope.agenciesList = [];
+            scope.portfoliosList = [];
+            scope.centersList = [];
+            scope.groupsList = [];
+            scope.productsList = [];
+            scope.facilitators = [];
+            scope.yesNo = [{value: "YES", name: "Yes"}, {value: "NO", name: "No"}];
+            scope.restrictDate = new Date();
+            scope.formData = {};
+            scope.formData.members = [];
+            scope.membersForm = {
+                workWithPuente: "YES"
+            };
+            scope.memberDetailsForm;
+            scope.groupData;
+            scope.membersList = [];
+            scope.tf = "HH:mm";
+
+            resourceFactory.prequalificationResource.get({groupId: routeParams.groupId}, function (data) {
+                console.log("Make call for prequalification");
+                console.log(data);
+                //scope.offices = data.allowedParents;
+                scope.id = data.id;
+                if (data.openingDate) {
+                    var editDate = dateFilter(data.openingDate, scope.df);
+                    scope.first.date = new Date(editDate);
+                }
+
+                if(data.groupMembers){
+                    data.groupMembers.forEach(member => {
+                        if (member.dob) {
+                            var dobDate = dateFilter(member.dob, scope.df);
+                            member.dob = new Date(dobDate);
+                        }
+                    });
+                }
+                scope.formData =
+                {
+                    agencyId: data.agencyId,
+                    productId: data.productId,
+                    centerId: data.centerId,
+                    facilitator: data.facilitatorId,
+                    groupName: data.groupName,
+                    prequalificationNumber: data.prequalificationNumber,
+                    members: data.groupMembers
+
+                }
+            });
+
+            resourceFactory.prequalificationTemplateResource.get(function (data) {
+                console.log(data.facilitators);
+                scope.agenciesList = data.agencies,
+                scope.centersList = data.centerData,
+                scope.productsList = data.loanProducts,
+                scope.facilitators = data.facilitators
+            });
+
+            scope.addMemberData = function () {
+                var uiValidationErrors = [];
+                if (!validationService.checkDPI(scope.membersForm.dpi)) {
+                    uiValidationErrors.push({
+                        message: `${scope.membersForm.dpi} DPI provided is invalid`
+                    });
+                } else {
+                    var reqDate = dateFilter(scope.membersForm.dob, scope.df);
+                    scope.membersForm.dob = reqDate;
+                    scope.membersForm['locale'] = scope.optlang.code;
+                    scope.membersForm['dateFormat'] = scope.df;
+                    scope.formData.members.push(scope.membersForm);
+                    scope.membersForm = {
+                       workWithPuente: "YES"
+                    };
+                    scope.memberDetailsForm.$setUntouched();
+                    scope.memberDetailsForm.$setPristine();
+
+                }
+                this.uiValidationErrors = uiValidationErrors;
+            }
+
+           scope.removeMember = function (index) {
+                scope.formData.members.splice(index,1);
+           };
+
+            scope.getGroupsByCenterId = function (centerId) {
+                scope.groupsList = [];
+
+                resourceFactory.centerResource.get({centerId: centerId,associations: 'groupMembers'}, function (data) {
+                    scope.groupsList = data.groupMembers;
+                });
+            }
+
+            scope.getGroupMembers = function (groupId) {
+
+                resourceFactory.groupResource.get({groupId: groupId, associations: 'clientMembers'}, function (data) {
+                    scope.group = data;
+                    if(data.clientMembers){
+                        scope.isGroupMembersAvailable = (data.clientMembers.length>0);
+                        scope.membersList = data.clientMembers;
+                        scope.groupData = data;
+
+                        if (scope.groupData.meetingStartTime) {
+                            scope.groupData.meetingStartTime = dateFilter(scope.groupData.meetingStartTime, scope.tf);
+                        }
+                        if (scope.groupData.meetingEndTime) {
+                            scope.groupData.meetingEndTime = dateFilter(scope.groupData.meetingEndTime, scope.tf);
+                        }
+                    }
+                    scope.isClosedGroup = data.status.value == 'Closed';
+                    scope.staffData.staffId = data.staffId;
+                });
+            }
+
+            scope.prequalifyGroup = function (){
+                console.log("submitting form data")
+                scope.formData.locale = scope.optlang.code;
+                scope.formData.individual = false;
+                scope.formData.dateFormat = scope.df;
+                if (scope.membersList.length > 0){
+                    let newMemberData = [];
+                    for (var i = 0; i < scope.membersList.length; i++) {
+                        let memberData = {};
+                        memberData.clientId = scope.membersList[i].id ;
+                        memberData.name = scope.membersList[i].displayName ;
+                        memberData.dpi = scope.membersList[i].dpiNumber ;
+                        if(scope.membersList[i].dateOfBirth){
+                            memberData.dob = dateFilter(new Date(scope.membersList[i].dateOfBirth),scope.df);
+                        }
+                        memberData.amount = scope.membersList[i].requestedAmount ;
+                        memberData.locale = scope.optlang.code;
+                        memberData.dateFormat = scope.df;
+                        scope.formData.members.push(memberData)
+                    }
+                }
+
+
+                resourceFactory.prequalificationResource.prequalifyExistingGroup({groupId: scope.formData.groupId,anotherResource:'prequalifyGroup'},this.formData, function (data) {
+                    location.path('prequalification/' + data.resourceId + '/viewdetails');
+                });
+            }
+
+            scope.requestPrequalification = function () {
+                console.log("submitting form data")
+                this.formData.locale = scope.optlang.code;
+                this.formData.dateFormat = scope.df;
+                this.formData.individual = false;
+
+                // this.formData.members.forEach(function(member){
+                //     member.locale = scope.optlang.code;
+                //     member.dateFormat = scope.df;
+                // })
+                resourceFactory.prequalificationResource.save(this.formData, function (data) {
+                    location.path('prequalification/' + data.resourceId + '/viewdetails');
+                });
+            }
+
+            scope.generatePrequalificationNumber = function (){
+                var agencyId = this.formData.agencyId
+                var groupId = this.formData.groupId
+                return "PRECAL-"+agencyId+"-"+groupId.toString().padStart(4,"0")
+            }
+
+            scope.resolveTime = function (time) {
+                let hour = time[0];
+                let minute = time[1];
+                let seconds = time[2];
+                return hour.toString().padStart(2,"0")+':'+minute.toString().padStart(2,"0")+':'+seconds.toString().padStart(2,"0");
+            }
+
+            scope.updatePreQualification = function () {
+                console.log("submitting form data for update");
+                this.formData.locale = scope.optlang.code;
+                this.formData.dateFormat = scope.df;
+                this.formData.individual = false;
+
+                let eMembers = this.formData.members;
+                let memberArray = [];
+                eMembers.forEach(function(member){
+                    let m = {
+                        locale : scope.optlang.code,
+                        dateFormat : scope.df,
+                        name : member.name,
+                        dpi : member.dpi,
+                        dob : member.dob ? dateFilter(member.dob,  scope.df) : member.dob,
+                        amount : member.requestedAmount,
+                        puente : member.workWithPuente,
+                        id : member.id
+                    }
+
+                    memberArray.push(m);
+                });
+                this.formData.members = memberArray;
+                resourceFactory.prequalificationResource.update({groupId: routeParams.groupId},this.formData, function (data) {
+                    location.path('prequalification/' + data.resourceId + '/viewdetails');
+                });
+            }
+
+        }
+    });
+
+    mifosX.ng.application.controller('EditGroupPrequalificatoinController', ['$scope', '$routeParams', '$route', 'dateFilter', '$location', 'ResourceFactory', 'ValidationService', '$http', '$uibModal', 'API_VERSION', '$timeout', '$rootScope', 'Upload', mifosX.controllers.EditGroupPrequalificatoinController]).run(function ($log) {
+        $log.info("EditGroupPrequalificatoinController initialized");
+    });
+}(mifosX.controllers || {}));
diff --git a/app/scripts/controllers/prequalification/NewGroupPrequalificatoinController.js b/app/scripts/controllers/prequalification/NewGroupPrequalificatoinController.js
index de7b5fc725..4f7ee33ec0 100644
--- a/app/scripts/controllers/prequalification/NewGroupPrequalificatoinController.js
+++ b/app/scripts/controllers/prequalification/NewGroupPrequalificatoinController.js
@@ -1,6 +1,6 @@
 (function (module) {
     mifosX.controllers = _.extend(module, {
-        NewGroupPrequalificatoinController: function (scope, routeParams, route, dateFilter, location, resourceFactory, http, $uibModal, API_VERSION, $timeout, $rootScope, Upload) {
+        NewGroupPrequalificatoinController: function (scope, routeParams, route, dateFilter, location, resourceFactory, validationService, http, $uibModal, API_VERSION, $timeout, $rootScope, Upload) {
 
             scope.agenciesList = [];
             scope.portfoliosList = [];
@@ -12,7 +12,9 @@
             scope.restrictDate = new Date();
             scope.formData = {};
             scope.formData.members = [];
-            scope.membersForm = {};
+            scope.membersForm = {
+                workWithPuente: "YES"
+            };
             scope.memberDetailsForm;
             scope.groupData;
             scope.membersList = [];
@@ -25,22 +27,32 @@
                 scope.facilitators = data.facilitators
             });
 
-
-
             scope.addMemberData = function () {
-                var reqDate = dateFilter(scope.membersForm.dob, scope.df);
-
-                scope.membersForm.dob = reqDate;
-                scope.membersForm['locale'] = scope.optlang.code;
-                scope.membersForm['dateFormat'] = scope.df;
-
-                scope.formData.members.push(scope.membersForm);
-                scope.membersForm = {}
-                scope.memberDetailsForm.$setUntouched();
-                scope.memberDetailsForm.$setPristine();
+                var uiValidationErrors = [];
+                if (!validationService.checkDPI(scope.membersForm.dpi)) {
+                    uiValidationErrors.push({
+                        message: `${scope.membersForm.dpi} DPI provided is invalid`
+                    });
+                } else {
+                    var reqDate = dateFilter(scope.membersForm.dob, scope.df);
+                    scope.membersForm.dob = reqDate;
+                    scope.membersForm['locale'] = scope.optlang.code;
+                    scope.membersForm['dateFormat'] = scope.df;
+                    scope.formData.members.push(scope.membersForm);
+                    scope.membersForm = {
+                        workWithPuente: "YES"
+                    };
+                    scope.memberDetailsForm.$setUntouched();
+                    scope.memberDetailsForm.$setPristine();
 
+                }
+                this.uiValidationErrors = uiValidationErrors;
             }
 
+            scope.removeMember = function (index) {
+                scope.formData.members.splice(index,1);
+            };
+
             scope.getGroupsByCenterId = function (centerId) {
                 scope.groupsList = [];
 
@@ -129,7 +141,7 @@
         }
     });
 
-    mifosX.ng.application.controller('NewGroupPrequalificatoinController', ['$scope', '$routeParams', '$route', 'dateFilter', '$location', 'ResourceFactory', '$http', '$uibModal', 'API_VERSION', '$timeout', '$rootScope', 'Upload', mifosX.controllers.NewGroupPrequalificatoinController]).run(function ($log) {
+    mifosX.ng.application.controller('NewGroupPrequalificatoinController', ['$scope', '$routeParams', '$route', 'dateFilter', '$location', 'ResourceFactory', 'ValidationService', '$http', '$uibModal', 'API_VERSION', '$timeout', '$rootScope', 'Upload', mifosX.controllers.NewGroupPrequalificatoinController]).run(function ($log) {
         $log.info("NewGroupPrequalificatoinController initialized");
     });
 }(mifosX.controllers || {}));
diff --git a/app/scripts/controllers/prequalification/PrequalificationDetailsController.js b/app/scripts/controllers/prequalification/PrequalificationDetailsController.js
index eed4b488c6..9fcb59331d 100644
--- a/app/scripts/controllers/prequalification/PrequalificationDetailsController.js
+++ b/app/scripts/controllers/prequalification/PrequalificationDetailsController.js
@@ -6,7 +6,7 @@
             scope.formData = {};
             scope.groupMembers = [];
             scope.prequalificationDocuments = [];
-
+            scope.showValidatePolicies = routeParams.showValidatePolicies == 'true' ? true : false;
             resourceFactory.prequalificationResource.get({groupId: routeParams.groupId}, function (data) {
                 scope.groupData = data;
                 scope.groupMembers = data.groupMembers;
@@ -37,7 +37,7 @@
                     if (!scope.$$phase) {
                         scope.$apply();
                     }
-                    location.path('/prequalificationGroups/newprequalification/new');
+                    location.path('/prequalificationGroups/new');
                 });
             };
 
@@ -52,10 +52,29 @@
                     return 'text-success';
                 }
             }
+            scope.policyCheckColor = function (redValidationCount) {
+                if (redValidationCount > 0){
+                    return 'text-danger';
+                }
+                return 'text-success'
+            }
+            scope.validateHardPolicy = function(){
+                resourceFactory.prequalificationChecklistResource.validate({prequalificationId: routeParams.groupId}, {}, function (data) {
+                    route.reload();
+                });
+            }
 
             scope.onFileSelect = function (files) {
                 scope.formData.file = files[0];
             };
+
+            scope.showSupportDocumentUploadPage = function(){
+                var allowedStatuses =  [400, 200];
+                if(scope.groupData.status){
+                    return allowedStatuses.includes(scope.groupData.status.id)
+                }
+                return false;
+            }
         }
     });
 
diff --git a/app/scripts/filters/StatusLookup.js b/app/scripts/filters/StatusLookup.js
index b42abaeb78..9d57344350 100644
--- a/app/scripts/filters/StatusLookup.js
+++ b/app/scripts/filters/StatusLookup.js
@@ -39,7 +39,9 @@
                     "purchasedSharesStatusType.approved": "statusApproved",
                     "purchasedSharesStatusType.rejected": "statusrejected",
                     "charges.StatusType.active.true": "statusactive",
-                    "employees.StatusType.active.true": "statusactive"
+                    "employees.StatusType.active.true": "statusactive",
+                    "prequalification.status.blacklist.checked": "statusApproved",
+                    "prequalification.status.blacklist.rejected": "statusrejected"
                 }
 
                 return cssClassNameLookup[input];
diff --git a/app/scripts/mifosXComponents.js b/app/scripts/mifosXComponents.js
index f195c804be..4425c9c94a 100755
--- a/app/scripts/mifosXComponents.js
+++ b/app/scripts/mifosXComponents.js
@@ -13,6 +13,7 @@ define(['Q', 'underscore', 'mifosX'], function (Q) {
             'SessionManager',
             'Paginator',
             'UIConfigService',
+            'ValidationService',
             'NotificationResponseHeaderProvider'
         ],
 
@@ -51,6 +52,7 @@ define(['Q', 'underscore', 'mifosX'], function (Q) {
             'loanAccount/CreditBureauSummaryController',
             'loanAccount/CreditReportFetchThitsaWorksController',
             'loanAccount/CreditReportUploadThitsaWorksController',
+            'loanAccount/LoanFuturePaymentController',
             'groups/AssignStaffController',
             'client/ClientController',
             'client/CreateClientCollateralController',
@@ -392,7 +394,10 @@ define(['Q', 'underscore', 'mifosX'], function (Q) {
             'prequalification/PrequalificationsController',
             'prequalification/PrequalificationDetailsController',
             'prequalification/IndividualPrequalificatoinFormController',
-            'prequalification/IndividualPrequalificatoinController'
+            'prequalification/IndividualPrequalificatoinController',
+            'prequalification/EditGroupPrequalificatoinController',
+            'loanAccount/RestructureCreditsController',
+            'hardpolicychecklist/ViewHardPolicyChecklistController'
         ],
         filters: [
             'StatusLookup',
@@ -420,6 +425,7 @@ define(['Q', 'underscore', 'mifosX'], function (Q) {
             'FormValidateDirective',
             'FormSubmitValidateDirective',
             'ApiValidationDirective',
+            'UiValidationDirective',
             'HasPermissionDirective',
             'ActivitiesDisplayPanelDirective',
             'ScrollbarTopDirective',
diff --git a/app/scripts/routes.js b/app/scripts/routes.js
index 16b05e56ff..52f20304bd 100755
--- a/app/scripts/routes.js
+++ b/app/scripts/routes.js
@@ -956,6 +956,9 @@
             .when('/loanforeclosure/:id', {
                 templateUrl: 'views/loans/loanforeclosure.html'
             })
+            .when('/loanfuturepayment/:id', {
+                templateUrl: 'views/loans/loanfuturepayment.html'
+            })
             .when('/address/:id', {
                 templateUrl: 'views/administration/AddressForm.html'
             })
@@ -1211,10 +1214,20 @@
             templateUrl: 'views/prequalifications/existingGroupPrequalification.html'
         }).when('/prequalification/:groupId/viewdetails', {
             templateUrl: 'views/prequalifications/prequalificationDetails.html'
+        }).when('/prequalification/:groupId/edit', {
+            templateUrl: 'views/prequalifications/editgroup.html'
         }).when('/prequalifications/individualprequalifications', {
             templateUrl: 'views/prequalifications/individualPrequalificationList.html'
         }).when('/prequalifications/individual/create', {
             templateUrl: 'views/prequalifications/individualPrequalification.html'
+        }).when('/evaluation/hardpolicychecklist/:groupId', {
+            templateUrl: 'views/hardpolicy/checklistevaluationform.html'
+        }).when('/evaluation/hardpolicychecklist/:groupId/:evaluationId', {
+            templateUrl: 'views/hardpolicy/checklistevaluationdetails.html'
+        }).when('/loans/restructurecredit/:clientId', {
+            templateUrl: 'views/loans/restructurecredits.html'
+        }).when('/viewhardpolicychecklist/:groupId', {
+            templateUrl: '/views/hardpolicychecklist/viewhardpolicychecklist.html'
         });
         $locationProvider.hashPrefix('');
         $locationProvider.html5Mode(false);
diff --git a/app/scripts/services/ResourceFactoryProvider.js b/app/scripts/services/ResourceFactoryProvider.js
index 730a51a900..f4de4c6e13 100755
--- a/app/scripts/services/ResourceFactoryProvider.js
+++ b/app/scripts/services/ResourceFactoryProvider.js
@@ -10,6 +10,7 @@
             this.setTenantIdenetifier = function (tenant) {
                 tenantIdentifier = tenant;
             }
+
             this.$get = ['$resource', '$rootScope', function (resource, $rootScope) {
                 var defineResource = function (url, paramDefaults, actions) {
                     var tempUrl = baseUrl;
@@ -84,6 +85,11 @@
                     prequalificationTemplateResource: defineResource(apiVer + "/prequalification/template", {}, {
                         get: {method: 'GET', params: {}},
                     }),
+
+                    prequalificationChecklistResource: defineResource(apiVer + "/prequalification/checklist/:prequalificationId", {prequalificationId:'@prequalificationId'}, {
+                        get: {method: 'GET', params: {}, isArray:true},
+                        validate: {method: 'POST', params: {command: 'validateprequalification'}},
+                    }),
                     prequalificationResource: defineResource(apiVer + "/prequalification/:anotherResource/:groupId", {groupId: '@groupId',anotherResource: '@anotherResource'}, {
                         get: {method: 'GET', params: {}},
                         prequalifyExistingGroup: {method: 'POST', params: {anotherResource: '@anotherResource'}},
@@ -376,6 +382,10 @@
                         getAllCodeValues: {method: 'GET', params: {}, isArray: true},
                         update: { method: 'PUT', params: {} }
                     }),
+                    codeValueNameResource: defineResource(apiVer + "/codes/codevalues/:codeName", {codeName: '@codeName'}, {
+                        getAllCodeValues: {method: 'GET', params: {}, isArray: true},
+                        update: { method: 'PUT', params: {} }
+                    }),
                     hookResources: defineResource(apiVer + "/hooks/:hookId", {hookId: "@hookId"}, {
                         getAllHooks: {method: 'GET', params: {}, isArray: true},
                         getHook: {method: 'GET', params: {}},
@@ -556,6 +566,14 @@
                         reject:{method:'POST',params:{command:'reject'}},
                         approve:{method:'POST',params:{command:'approve'}}
                     }),
+
+                    restructurecreditsResource: defineResource(apiVer + "/restructurecredits/:clientId/:anotherresource",{clientId:'@clientId', anotherresource: '@anotherresource'},{
+                        get: {method: 'GET',params:{}},
+                        save: {method: 'POST',params:{anotherresource: '@anotherresource'}},
+                        template: {method: 'GET',params:{anotherresource:'template'}},
+                        reject:{method:'POST',params:{command:'reject'}},
+                        approve:{method:'POST',params:{command:'approve'}}
+                    }),
                     auditResource: defineResource(apiVer + "/audits/:templateResource", {templateResource: '@templateResource'}, {
                         get: {method: 'GET', params: {}},
                         search: {method: 'GET', params: {}, isArray: false}
@@ -961,6 +979,9 @@
                     transferAgencyResource: defineResource(apiVer + "/agencies/:agencyId/transfer", {agencyId: "@agencyId"}, {
                         transfer: { method: 'PUT'}
                     }),
+                    loanTrxnsSimulatePaymentResource: defineResource(apiVer + "/loans/:loanId/transactions/simulation", {loanId: '@loanId'}, {
+                        get: {method: 'GET', params: {}}
+                    }),
                 };
             }];
         }
diff --git a/app/views/_topnavbar.html b/app/views/_topnavbar.html
index e14887826a..78e67449e7 100644
--- a/app/views/_topnavbar.html
+++ b/app/views/_topnavbar.html
@@ -30,6 +30,7 @@
                             }}</a></li>
                         <li><a href="#/centers" has-permission='READ_CENTER'>{{ 'label.anchor.centers' | translate
                             }}</a></li>
+                        <li><a href="#/prequalificationsmenu" has-permission='VIEW_PREQUALIFICATIONS'>{{'label.anchor.prequalifications' | translate}}</a></li>
                         <li><a href="#/blacklist" has-permission='VIEW_BLACKLIST'>{{ 'label.anchor.blacklist' | translate
                             }}</a></li>
                     </ul>
diff --git a/app/views/administration/organization.html b/app/views/administration/organization.html
index 544e715682..7be799a662 100644
--- a/app/views/administration/organization.html
+++ b/app/views/administration/organization.html
@@ -10,10 +10,10 @@ <h5>Organization</h5>
                     <div class="list-group">
                         <a class="list-group-item" href="#/offices" has-permission='READ_OFFICE'>
                             <h5 class="list-group-item-heading"><i class="fa fa-building fa fa-large"></i>&nbsp;&nbsp;{{'label.anchor.manageoffices'
-                                | translate}}</h5>
+                            | translate}}</h5>
 
                             <p class="list-group-item-text">{{'label.addnewofficeormodifyordeactivateofficeormodifyofficeheirarchy'
-                                | translate}}</p>
+                            | translate}}</p>
                         </a>
                         <a class="list-group-item" href="#/agencies" has-permission='READ_AGENCY'>
                             <h5 class="list-group-item-heading"><i class="fa fa-building-o fa fa-large"></i>&nbsp;&nbsp;{{'label.anchor.manageagencies'
@@ -45,37 +45,37 @@ <h5 class="list-group-item-heading"><i class="fa fa-book fa fa-large"></i>&nbsp;
                         </a>
                         <a class="list-group-item" href="#/holidays" has-permission='READ_HOLIDAY'>
                             <h5 class="list-group-item-heading"><i class="fa fa-calendar fa fa-large"></i>&nbsp;&nbsp;{{'label.anchor.manageholidays'
-                                | translate}}</h5>
+                            | translate}}</h5>
 
                             <p class="list-group-item-text">{{'label.defineholidaysforoffices' | translate}}</p>
                         </a>
                         <a class="list-group-item" href="#/employees" has-permission='READ_STAFF'>
                             <h5 class="list-group-item-heading"><i class="fa fa-user fa fa-large"></i>&nbsp;&nbsp;{{'label.anchor.manageemployees'
-                                | translate}}</h5>
+                            | translate}}</h5>
 
                             <p class="list-group-item-text">{{'label.aemployeerepresentsloanofficerswithnoaccesstosystem' |
-                                translate}}</p>
+                            translate}}</p>
                         </a>
                         <a class="list-group-item" href="#/standinginstructions/history" has-permission='READ_STANDINGINSTRUCTION'>
                             <h5 class="list-group-item-heading"><i class="fa fa-book fa fa-large"></i>&nbsp;&nbsp;
                                 {{'label.anchor.standinginstruction.history' | translate}}</h5>
 
                             <p class="list-group-item-text">{{'label.view.standinginstructions.history.logging' |
-                                translate}}</p>
+                            translate}}</p>
                         </a>
-                     <!--   <a class="list-group-item" href="#/advsearch">
-                            <h5 class="list-group-item-heading"><i class="fa fa-large fa fa-money"></i>&nbsp;&nbsp;
-                                {{'label.anchor.fund.mapping' | translate}}</h5>
+                        <!--   <a class="list-group-item" href="#/advsearch">
+                               <h5 class="list-group-item-heading"><i class="fa fa-large fa fa-money"></i>&nbsp;&nbsp;
+                                   {{'label.anchor.fund.mapping' | translate}}</h5>
 
-                            <p class="list-group-item-text">{{'label.view.advance.search.fund.mapping' |
-                                translate}}</p>
-                        </a>-->
+                               <p class="list-group-item-text">{{'label.view.advance.search.fund.mapping' |
+                                   translate}}</p>
+                           </a>-->
                         <a class="list-group-item" href="#/passwordpreferences" has-permission='READ_PASSWORD_VALIDATION_POLICY'>
                             <h5 class="list-group-item-heading"><i class="fa fa-lock fa fa-large"></i>&nbsp;&nbsp;
                                 {{'label.anchor.passwordPreferences' | translate}}</h5>
 
                             <p class="list-group-item-text">{{'label.view.passwordPreferences' |
-                                translate}}</p>
+                            translate}}</p>
                         </a>
                         <a class="list-group-item" href="#/viewallprovisionings" has-permission='VIEW_PROVISIONS'>
                             <h5 class="list-group-item-heading"><i class="fa fa-pencil fa fa-large"></i>&nbsp;&nbsp;
@@ -91,21 +91,21 @@ <h5 class="list-group-item-heading"><i class="fa fa-check fa fa-large"></i>&nbsp
                             <h5 class="list-group-item-heading"><i class="icon-large icon-double-angle-right"></i>&nbsp;&nbsp;
                                 {{'label.anchor.adhoc' | translate}}</h5>
                             <p class="list-group-item-text">{{'label.view.adhocs' | translate}}</p>
-                       </a>
+                        </a>
                     </div>
                 </div>
                 <div class="col-sm-6 col-md-6">
                     <div class="list-group">
                         <a class="list-group-item" href="#/currconfig" has-permission='READ_CURRENCY'>
                             <h5 class="list-group-item-heading"><i class="fa fa-large fa fa-cogs"></i>&nbsp;&nbsp;{{'label.anchor.currencyconfig'
-                                | translate}}</h5>
+                            | translate}}</h5>
 
                             <p class="list-group-item-text">{{'label.currenciesavailableacrossorganizationfordifferentproducts' |
-                                translate}}</p>
+                            translate}}</p>
                         </a>
                         <a class="list-group-item" href="#/managefunds" has-permission='READ_FUND'>
                             <h5 class="list-group-item-heading"><i class="fa fa-large fa fa-money"></i>&nbsp;&nbsp;{{'label.anchor.managefunds'
-                                | translate}}</h5>
+                            | translate}}</h5>
 
                             <p class="list-group-item-text">{{'label.fundsareassociatedwithloans' | translate}}</p>
                         </a>
@@ -114,27 +114,27 @@ <h5 class="list-group-item-heading"><i class="fa fa-money fa fa-large"></i>&nbsp
                                 'label.anchor.bulkloanreassignment' | translate}}</h5>
 
                             <p class="list-group-item-text">{{'label.easywaytoreassignalltheloanfromonelotoanotherlo' |
-                                translate}}</p>
+                            translate}}</p>
                         </a>
                         <a class="list-group-item" href="#/tellers" has-permission='READ_TELLER'>
                             <h5 class="list-group-item-heading"><i class="fa fa-money fa fa-large"></i>&nbsp;&nbsp;
                                 {{'label.anchor.tellercashmanagement' | translate}}</h5>
 
                             <p class="list-group-item-text">{{'label.view.tellercashmanagement' |
-                                translate}}</p>
+                            translate}}</p>
                         </a>
                         <a class="list-group-item" href="#/workingdays" has-permission='READ_WORKINGDAYS'>
                             <h5 class="list-group-item-heading"><i class="fa fa-calendar fa fa-large"></i>&nbsp;&nbsp;
                                 {{'label.anchor.workingDays' | translate}}</h5>
 
                             <p class="list-group-item-text">{{'label.view.workingDays' |
-                                translate}}</p>
+                            translate}}</p>
                         </a>
                         <a class="list-group-item" href="#/viewpaymenttype" has-permission='READ_PAYMENTTYPE'>
                             <h5 class="list-group-item-heading"><i class="fa fa-dollar fa fa-large"></i>&nbsp;&nbsp;
                                 {{'label.anchor.paymentTypes' | translate}}</h5>
                             <p class="list-group-item-text">{{'label.view.paymentTypes' |
-                                translate}}</p>
+                            translate}}</p>
                         </a>
                         <a class="list-group-item" href="#/smscampaigns" has-permission='VIEW_SMSCAMPAIGNS'>
                             <h5 class="list-group-item-heading"><i class="fa fa-envelope fa fa-large"></i>&nbsp;&nbsp;
@@ -146,11 +146,6 @@ <h5 class="list-group-item-heading"><i class="fa fa-upload fa fa-large"></i>&nbs
                                 {{'label.anchor.bulkimport' | translate}}</h5>
                             <p class="list-group-item-text">{{'label.view.bulkimport' | translate}}</p>
                         </a>
-                        <a class="list-group-item" href="#/prequalificationsmenu" has-permission='VIEW_PREQUALIFICATIONS'>
-                            <h5 class="list-group-item-heading"><i class="fa fa-check-square-o fa fa-large"></i>&nbsp;&nbsp;
-                                {{'label.anchor.prequalifications' | translate}}</h5>
-                            <p class="list-group-item-text">{{'label.view.prequalifications' | translate}}</p>
-                        </a>
                     </div>
                 </div>
             </div>
diff --git a/app/views/clients/addclientdocument.html b/app/views/clients/addclientdocument.html
index 3714500cc9..918406be02 100644
--- a/app/views/clients/addclientdocument.html
+++ b/app/views/clients/addclientdocument.html
@@ -15,7 +15,7 @@
 
                 <div class="col-sm-3">
                     <select id="name" ng-model="formData.name"
-                            ng-options="documenttype.name as documenttype.name for documenttype in documenttypes"
+                            ng-options="documenttype.name as documenttype.name for documenttype in allowedDocumentTypes"
                             value="{{documenttype.name}}" required="required"
                             class="form-control">
                         <option style="display:none" value="">{{'label.menu.selectone' | translate}}
@@ -24,10 +24,53 @@
                 <div class="col-sm-3">
                     <form-validate valattributeform="clientdocumentform" valattribute="name"/>
                 </div>
+        </div>
+        <div class="form-group">
+            <label class="control-label col-sm-2" for="type">{{'label.input.documenttype' | translate}}<span
+                class="required">*</span></label>
+
+                <div class="col-sm-3">
+                    <select id="type" ng-model="formData.documentType"
+                            ng-options="type.id as type.name for type in documentTypes"
+                            value="{{type.id}}" required="required"
+                            class="form-control">
+                        <option style="display:none" value="">{{'label.menu.selectone' | translate}}
+                    </select>
+                </div>
+                <div class="col-sm-3">
+                    <form-validate valattributeform="clientdocumentform" valattribute="type"/>
+                </div>
+        </div>
+
+        <div class="form-group">
+            <label class="control-label col-sm-2" for="purpose">{{'label.input.purpose' | translate}}<span
+                class="required">*</span></label>
+
+                <div class="col-sm-3">
+                    <select id="purpose" ng-model="formData.documentPurpose"
+                            ng-options="purpose.id as purpose.name for purpose in documentPurposes"
+                            value="{{purpose.id}}" required="required"
+                            class="form-control">
+                        <option style="display:none" value="">{{'label.menu.selectone' | translate}}
+                    </select>
+                </div>
+                <div class="col-sm-3">
+                    <form-validate valattributeform="clientdocumentform" valattribute="purpose"/>
+                </div>
+        </div>
+
+            <div class="form-group">
+                <label class="control-label col-sm-2">{{'label.input.date' | translate}}</label>
+
+                <div class="col-sm-3">
+                    <input id="transferDate" type="text" name="datecreated" datepicker-pop="dd MMMM yyyy" required="required"
+                           class="form-control paddedbottom10 paddedtop" ng-model="formData.dateCreated" is-open="opened"
+                           max="restrictDate" autocomplete="off"/>
+                </div>
             </div>
 
             <div class="form-group">
-                <label class="control-label col-sm-2">{{'label.input.description' | translate}}</label>
+                <label class="control-label col-sm-2">{{'label.input.observations' | translate}}</label>
 
                 <div class="col-sm-3">
                     <textarea rows="2" ng-model="formData.description" class="form-control"></textarea>
diff --git a/app/views/clients/createclient.html b/app/views/clients/createclient.html
index 387b5fadbc..db12e6682b 100755
--- a/app/views/clients/createclient.html
+++ b/app/views/clients/createclient.html
@@ -1,727 +1,1229 @@
 <!DOCTYPE html>
 <div class="content-container" ng-controller="CreateClientController">
-   <ul class="breadcrumb">
-      <li ng-if="!groupid"><a href="#/clients">{{'label.anchor.clients' | translate}}</a></li>
-      <li ng-if="groupid"><a href="#/groups">{{'label.anchor.groups' | translate}}</a></li>
-      <li ng-if="groupid"><a href="#/viewgroup/{{groupid}}">{{'label.anchor.viewgroup' | translate}}</a></li>
-      <li class="active">{{'label.anchor.createclient' | translate}}</li>
-   </ul>
-   <wizard current-step="step" class="card well">
-      <wz-step icon="fa fa-circle-o" wz-title="{{'label.heading.createclient' | translate}}">
-         <div class="card-content">
-            <form name="createclientform" novalidate="" class="form-horizontal" rc-submit="submit()">
-               <api-validate></api-validate>
-               <fieldset>
-                  <!--<legend>{{'label.heading.createclient' | translate}}</legend>-->
-                  <div class="form-group">
-                     <label class="control-label col-sm-2">
-                        {{'label.input.office' | translate}} <span ng-show="forceOffice == null"
-                           class="required">*</span>
-                     </label>
-                     <div class="col-sm-3">
-                        <div ng-show="forceOffice == null">
-                           <select chosen="offices" id="officeId" ng-model="formData.officeId" class="form-control"
-                              ng-options="office.id as office.name for office in offices" value="{{office.id}}"
-                              ng-change="changeOffice(formData.officeId)"></select>
-                        </div>
-                        <div ng-show="forceOffice != null">
-                           <p class="form-control-static">{{forceOffice.name}}</p>
-                        </div>
-                     </div>
-                     <label class="control-label col-sm-2">{{'label.input.staff' | translate}}</label>
-                     <div class="col-sm-3">
-                        <select chosen="staffs" id="staffId" ng-model="formData.staffId" class="form-control"
-                           ng-options="staff.id as staff.displayName for staff in staffs" value="{{staff.id}}">
-                           <option value="">--{{'label.menu.selectloanofficer' | translate}}--</option>
-                        </select>
-                     </div>
-                  </div>
-                  <div class="form-group">
-                     <label class="control-label col-sm-2">{{'label.input.legalForm' | translate}}<span class="required">*</span></label>
-                     <div class="col-sm-3">
-                        <select id="legalFormId" ng-model="formData.legalFormId" class="form-control"
-                           ng-options="legalForm.id as legalForm.value for legalForm in clientLegalFormOptions"
-                           value="{{legalForm.id}}" ng-change="displayPersonOrNonPersonOptions(formData.legalFormId)" late-Validate>
-                           <option value="">--{{'label.menu.legalForm' | translate}}--</option>
-                        </select>
-                     </div>
-                  </div>
-                  <div data-ng-switch on="showNonPersonOptions">
-                     <div data-ng-switch-when="false">
+    <ul class="breadcrumb">
+        <li ng-if="!groupid"><a href="#/clients">{{'label.anchor.clients' | translate}}</a></li>
+        <li ng-if="groupid"><a href="#/groups">{{'label.anchor.groups' | translate}}</a></li>
+        <li ng-if="groupid"><a href="#/viewgroup/{{groupid}}">{{'label.anchor.viewgroup' | translate}}</a></li>
+        <li class="active">{{'label.anchor.createclient' | translate}}</li>
+    </ul>
+    <wizard current-step="step" class="card well">
+        <wz-step icon="fa fa-circle-o" wz-title="{{'label.heading.createclient' | translate}}">
+            <div class="card-content">
+                <form name="createclientform" novalidate="" class="form-horizontal" rc-submit="submit()">
+                    <api-validate></api-validate>
+                    <fieldset>
+                        <!--<legend>{{'label.heading.createclient' | translate}}</legend>-->
                         <div class="form-group">
-                           <label class="control-label col-sm-2" for="firstname">{{ 'label.input.firstname' | translate
-                              }}<span class="required">*</span></label>
-                           <div class="col-sm-3">
-                              <input type="text" id="firstname" name="firstname" ng-model="formData.firstname"
-                                 class="form-control" required ng-pattern="/(^[A-z])[A-z.'-]*/" late-Validate />
-                           </div>
-                           <div class="col-sm-2">
+                            <label class="control-label col-sm-2">
+                                {{'label.input.office' | translate}} <span ng-show="forceOffice == null"
+                                                                           class="required">*</span>
+                            </label>
+                            <div class="col-sm-3">
+                                <div ng-show="forceOffice == null">
+                                    <select chosen="offices" id="officeId" ng-model="formData.officeId"
+                                            class="form-control"
+                                            ng-options="office.id as office.name for office in offices"
+                                            value="{{office.id}}"
+                                            ng-change="changeOffice(formData.officeId)"></select>
+                                </div>
+                                <div ng-show="forceOffice != null">
+                                    <p class="form-control-static">{{forceOffice.name}}</p>
+                                </div>
+                            </div>
+                            <label class="control-label col-sm-2">{{'label.input.staff' | translate}}</label>
+                            <div class="col-sm-3">
+                                <select chosen="staffs" id="staffId" ng-model="formData.staffId" class="form-control"
+                                        ng-options="staff.id as staff.displayName for staff in staffs"
+                                        value="{{staff.id}}">
+                                    <option value="">--{{'label.menu.selectloanofficer' | translate}}--</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="control-label col-sm-2">{{'label.input.legalForm' | translate}}<span
+                                    class="required">*</span></label>
+                            <div class="col-sm-3">
+                                <select id="legalFormId" ng-model="formData.legalFormId" class="form-control"
+                                        ng-options="legalForm.id as legalForm.value for legalForm in clientLegalFormOptions"
+                                        value="{{legalForm.id}}"
+                                        ng-change="displayPersonOrNonPersonOptions(formData.legalFormId)" late-Validate>
+                                    <option value="">--{{'label.menu.legalForm' | translate}}--</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div data-ng-switch on="showNonPersonOptions">
+                            <div data-ng-switch-when="false">
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="firstname">{{ 'label.input.firstname' | translate
+                                        }}<span class="required">*</span></label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="firstname" name="firstname" ng-model="formData.firstname"
+                                               class="form-control" required ng-pattern="/(^[A-z])[A-z.'-]*/"
+                                               late-Validate/>
+                                    </div>
+                                    <div class="col-sm-2">
                               <span ng-show="createclientform.firstname.$invalid && createclientform.firstname.$dirty">
                                  <small class="error required" ng-show="createclientform.firstname.$error.pattern">
                                     {{'validation.msg.client.name.cannot.start.specialchar.ornumber' | translate}}
                                  </small>
                               </span>
-                              <form-validate valattributeform="createclientform" valattribute="firstname" />
-                           </div>
+                                        <form-validate valattributeform="createclientform" valattribute="firstname"/>
+                                    </div>
+                                </div>
+                            </div>
                         </div>
-                     </div>
-                  </div>
-                  <div data-ng-switch on="showNonPersonOptions">
-                     <div data-ng-switch-when="false">
-                        <div class="form-group">
-                           <label class="control-label col-sm-2" for="middlename">{{'label.input.middlename' |
-                              translate}}</label>
-                           <div class="col-sm-3">
-                              <input type="text" id="middlename" name="middlename" ng-model="formData.middlename"
-                                 class="form-control" ng-pattern="/(^[A-z])[A-z.'-]*/" />
-                           </div>
-                           <div class="col-sm-2">
+                        <div data-ng-switch on="showNonPersonOptions">
+                            <div data-ng-switch-when="false">
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2" for="middlename">{{'label.input.middlename' |
+                                    translate}}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="middlename" name="middlename"
+                                               ng-model="formData.middlename"
+                                               class="form-control" ng-pattern="/(^[A-z])[A-z.'-]*/"/>
+                                    </div>
+                                    <div class="col-sm-2">
                               <span
-                                 ng-show="createclientform.middlename.$invalid && createclientform.middlename.$dirty">
+                                      ng-show="createclientform.middlename.$invalid && createclientform.middlename.$dirty">
                                  <small class="error required" ng-show="createclientform.middlename.$error.pattern">
                                     {{'validation.msg.client.name.cannot.start.specialchar.ornumber' | translate}}
                                  </small>
                               </span>
-                           </div>
-                           <label data-ng-switch on="showNonPersonOptions" class="control-label col-sm-2"
-                              for="isStaff">{{ 'label.input.isStaff' | translate }}</label>
-
-                           <div data-ng-switch on="showNonPersonOptions" class="col-sm-3">
-                              <label class="checkbox">
-                                 <input type="checkbox" id="isStaff" ng-model="formData.isStaff">
-                              </label>
-                           </div>
-                        </div>
-                     </div>
-                  </div>
-                  <div data-ng-switch on="showNonPersonOptions">
-                     <div data-ng-switch-when="false">
-                        <div class="form-group">
-                           <label class="control-label col-sm-2" for="lastname">{{'label.input.lastname' | translate}}
-                              <span class="required">*</span>
-                           </label>
-                           <div class="col-sm-3">
-                              <input type="text" id="lastname" name="lastname" ng-model="formData.lastname"
-                                 class="form-control" ng-pattern="/(^[A-z])[A-z.'-]*/" required late-Validate />
-                           </div>
-                           <div class="col-sm-2">
+                                    </div>
+                                    <label data-ng-switch on="showNonPersonOptions" class="control-label col-sm-2"
+                                           for="isStaff">{{ 'label.input.isStaff' | translate }}</label>
+
+                                    <div data-ng-switch on="showNonPersonOptions" class="col-sm-3">
+                                        <label class="checkbox">
+                                            <input type="checkbox" id="isStaff" ng-model="formData.isStaff">
+                                        </label>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div data-ng-switch on="showNonPersonOptions">
+                            <div data-ng-switch-when="false">
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="lastname">{{'label.input.lastname' | translate}}
+                                        <span class="required">*</span>
+                                    </label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="lastname" name="lastname" ng-model="formData.lastname"
+                                               class="form-control" ng-pattern="/(^[A-z])[A-z.'-]*/" required
+                                               late-Validate/>
+                                    </div>
+                                    <div class="col-sm-2">
                               <span ng-show="createclientform.lastname.$invalid && createclientform.lastname.$dirty">
                                  <small class="error required" ng-show="createclientform.lastname.$error.pattern">
                                     {{'validation.msg.client.name.cannot.start.specialchar.ornumber' | translate}}
                                  </small>
                               </span>
-                              <form-validate valattributeform="createclientform" valattribute="lastname" />
-                           </div>
+                                        <form-validate valattributeform="createclientform" valattribute="lastname"/>
+                                    </div>
+                                </div>
+                            </div>
                         </div>
-                     </div>
-                  </div>
-                  <div data-ng-switch on="showNonPersonOptions">
-                     <div data-ng-switch-when="true">
+
+                        <div data-ng-switch on="showNonPersonOptions">
+                            <div data-ng-switch-when="false">
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="othernames">{{'label.input.othernames' | translate}}
+                                        <span class="required">*</span>
+                                    </label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="othernames" name="othernames" ng-model="formData.othernames"
+                                               class="form-control" ng-pattern="/(^[A-z])[A-z.'-]*/"
+                                               late-Validate/>
+                                    </div>
+                                    <div class="col-sm-2">
+                              <span ng-show="createclientform.othernames.$invalid && createclientform.othernames.$dirty">
+                                 <small class="error required" ng-show="createclientform.othernames.$error.pattern">
+                                    {{'validation.msg.client.name.cannot.start.specialchar.ornumber' | translate}}
+                                 </small>
+                              </span>
+                                        <form-validate valattributeform="createclientform" valattribute="othernames"/>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
+                        <div data-ng-switch on="showNonPersonOptions">
+                            <div data-ng-switch-when="false">
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="maidenName">{{'label.input.maidenname' | translate}}
+                                        <span class="required">*</span>
+                                    </label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="maidenName" name="maidenName" ng-model="formData.maidenName"
+                                               class="form-control" ng-pattern="/(^[A-z])[A-z.'-]*/"
+                                               late-Validate/>
+                                    </div>
+                                    <div class="col-sm-2">
+                              <span ng-show="createclientform.maidenName.$invalid && createclientform.maidenName.$dirty">
+                                 <small class="error required" ng-show="createclientform.maidenName.$error.pattern">
+                                    {{'validation.msg.client.name.cannot.start.specialchar.ornumber' | translate}}
+                                 </small>
+                              </span>
+                                        <form-validate valattributeform="createclientform" valattribute="maidenName"/>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div data-ng-switch on="showNonPersonOptions">
+                            <div data-ng-switch-when="true">
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2" for="fullname">{{'label.input.fullname' |
+                                    translate}}<span class="required">*</span></label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="fullname" name="fullname" ng-model="formData.fullname"
+                                               class="form-control" ng-pattern="/(^[A-z])[A-z.'-]*/" required
+                                               late-Validate/>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="fullname"/>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
                         <div class="form-group">
-                           <label class="control-label col-sm-2" for="fullname">{{'label.input.fullname' |
-                              translate}}<span class="required">*</span></label>
-                           <div class="col-sm-3">
-                              <input type="text" id="fullname" name="fullname" ng-model="formData.fullname"
-                                 class="form-control" ng-pattern="/(^[A-z])[A-z.'-]*/" required late-Validate />
-                           </div>
-                           <div class="col-sm-2">
-                              <form-validate valattributeform="createclientform" valattribute="fullname" />
-                           </div>
-                        </div>
-                     </div>
-                  </div>
-                  <div class="form-group">
-                     <label class="control-label col-sm-2" for="mobileNo">{{'label.input.mobilenumber' |
-                        translate}}</label>
-                     <div class="col-sm-3">
-                        <input type="text" id="mobileNo" name="mobileNo" ng-model="formData.mobileNo"
-                           ng-pattern="/^[0-9]+$/" class="form-control" />
-                     </div>
-                     <div class="col-sm-2">
-                        <span ng-show="createclientform.mobileNo.$invalid && createclientform.mobileNo.$dirty">
-                           <small class="required" ng-show="createclientform.mobileNo.$error.pattern">
-                              {{'label.mustbenumeric' | translate}}
-                           </small>
-                        </span>
-                     </div>
-                  </div>
-                  <div class="form-group">
-                     <label class="control-label col-sm-2" for="dpi">{{'label.input.dpi' |
-                        translate}}<span class="required">*</span></label>
-                     <div class="col-sm-3">
-                        <input type="text" id="dpi" name="dpi" ng-model="formData.dpi"
-                           ng-pattern="/^[0-9]+$/" class="form-control" />
-                     </div>
-                     <div class="col-sm-2">
+                            <label class="control-label col-sm-2" for="dpi">{{'label.input.dpi' |
+                            translate}}<span class="required">*</span></label>
+                            <div class="col-sm-3">
+                                <input type="text" id="dpi" name="dpi" ng-model="formData.dpi"
+                                       ng-pattern="/^[0-9]+$/" class="form-control"/>
+                            </div>
+                            <div class="col-sm-2">
                         <span ng-show="createclientform.dpi.$invalid && createclientform.dpi.$dirty">
                            <small class="required" ng-show="createclientform.dpi.$error.pattern">
                               {{'label.mustbenumeric' | translate}}
                            </small>
                         </span>
-                     </div>
-                  </div>
-                  <div class="form-group">
-                     <label class="control-label col-sm-2" ng-hide="showNonPersonOptions">{{'label.input.dateofbirth' |
-                        translate}}<span class="required">*</span></label>
-                     <label class="control-label col-sm-2"
-                        ng-show="showNonPersonOptions">{{'label.input.incorporationdate' | translate}}<span class="required">*</span></label>
-                     <div class="col-sm-3">
-                        <input id="dateofbirth" type="text" name="dateofbirth" datepicker-pop="dd MMMM yyyy"
-                           ng-model="first.dateOfBirth" is-open="opened1"  required min="minDate" max="restrictDate"
-                           class="form-control" />
-                     </div>
-                     <div data-ng-switch on="showNonPersonOptions">
-                        <div data-ng-switch-when="false">
-                           <label class="control-label col-sm-2">{{'label.input.gender' | translate}}</label>
-                           <div class="col-sm-3">
-                              <select id="genderId" ng-model="formData.genderId" class="form-control"
-                                 ng-options="gender.id as gender.name for gender in genderOptions"
-                                 value="{{gender.id}}">
-                                 <option value="">--{{'label.menu.gender' | translate}}--</option>
-                              </select>
-                           </div>
-                        </div>
-                     </div>
-                     <div data-ng-switch on="showNonPersonOptions">
-                        <div data-ng-switch-when="true">
-                           <label class="control-label col-sm-2">{{'label.input.incorpValidityTillDate' |
-                              translate}}</label>
-                           <div class="col-sm-3">
-                              <input id="incorpValidityTillDate" type="text" name="incorpValidityTillDate"
-                                 datepicker-pop="dd MMMM yyyy" ng-model="first.incorpValidityTillDate" is-open="opened1"
-                                 class="form-control" />
-                           </div>
-                        </div>
-                     </div>
-                  </div>
-                  <div class="form-group">
-                     <label class="control-label col-sm-2">{{'label.input.clienttype' | translate}}</label>
-                     <div class="col-sm-3">
-                        <select id="clienttypeId" ng-model="formData.clientTypeId" class="form-control"
-                           ng-options="clienttype.id as clienttype.name for clienttype in clienttypeOptions"
-                           value="{{clienttype.id}}">
-                           <option value="">--{{'label.menu.clienttype' | translate}}--</option>
-                        </select>
-                     </div>
-                     <label class="control-label col-sm-2">{{'label.input.clientclassification' | translate}}</label>
-                     <div class="col-sm-3">
-                        <select id="clientClassificationId" ng-model="formData.clientClassificationId"
-                           class="form-control"
-                           ng-options="clientClassification.id as clientClassification.name for clientClassification in clientClassificationOptions"
-                           value="{{clientClassification.id}}">
-                           <option value="">--{{'label.menu.clientclassification' | translate}}--</option>
-                        </select>
-                     </div>
-                  </div>
-                  <div data-ng-switch on="showNonPersonOptions">
-                     <div data-ng-switch-when="true">
-                        <div class="form-group">
-                           <label class="control-label col-sm-2" for="incorpNumber">{{'label.input.incorpNumber' |
-                              translate}}</label>
-                           <div class="col-sm-3">
-                              <input type="text" id="incorpNumber"
-                                 ng-model="formData.clientNonPersonDetails.incorpNumber" class="form-control" />
-                           </div>
-                           <label class="control-label col-sm-2">{{'label.input.mainBusinessLine' | translate}}</label>
-                           <div class="col-sm-3">
-                              <select id="mainBusinessLineId"
-                                 ng-model="formData.clientNonPersonDetails.mainBusinessLineId" class="form-control"
-                                 ng-options="mainBusinessLine.id as mainBusinessLine.name for mainBusinessLine in clientNonPersonMainBusinessLineOptions"
-                                 value="{{mainBusinessLine.id}}">
-                                 <option value="">--{{'label.menu.mainBusinessLine' | translate}}--</option>
-                              </select>
-                           </div>
-                        </div>
-                     </div>
-                  </div>
-                  <div data-ng-switch on="showNonPersonOptions">
-                     <div data-ng-switch-when="true">
+                            </div>
+                        </div>
                         <div class="form-group">
-                           <label class="control-label col-sm-2">{{'label.input.constitution' | translate}}<span
-                                 class="required"></span></label>
-                           <div class="col-sm-3">
-                              <select id="constitutionId" name="constitution"
-                                 ng-model="formData.clientNonPersonDetails.constitutionId" class="form-control"
-                                 ng-options="constitution.id as constitution.name for constitution in clientNonPersonConstitutionOptions"
-                                 value="{{constitution.id}}">
-                                 <option value="">--{{'label.menu.constitution' | translate}}--</option>
-                              </select>
-                           </div>
-                           <div class="col-sm-2">
-                           </div>
-                        </div>
-                     </div>
-                  </div>
-                  <div data-ng-switch on="showNonPersonOptions">
-                     <div data-ng-switch-when="true">
+                            <label class="control-label col-sm-2"
+                                   ng-hide="showNonPersonOptions">{{'label.input.dateofbirth' |
+                            translate}}<span class="required">*</span></label>
+                            <label class="control-label col-sm-2"
+                                   ng-show="showNonPersonOptions">{{'label.input.incorporationdate' | translate}}<span
+                                    class="required">*</span></label>
+                            <div class="col-sm-3">
+                                <input id="dateofbirth" type="text" name="dateofbirth" datepicker-pop="dd MMMM yyyy"
+                                       ng-model="first.dateOfBirth" is-open="opened1" required min="minDate"
+                                       max="restrictDate"
+                                       class="form-control"/>
+                            </div>
+                            <div data-ng-switch on="showNonPersonOptions">
+                                <div data-ng-switch-when="false">
+                                    <label class="control-label col-sm-2">{{'label.input.gender' | translate}}</label>
+                                    <div class="col-sm-3">
+                                        <select id="genderId" ng-model="formData.genderId" class="form-control"
+                                                ng-options="gender.id as gender.name for gender in genderOptions"
+                                                value="{{gender.id}}">
+                                            <option value="">--{{'label.menu.gender' | translate}}--</option>
+                                        </select>
+                                    </div>
+                                </div>
+                            </div>
+                            <div data-ng-switch on="showNonPersonOptions">
+                                <div data-ng-switch-when="true">
+                                    <label class="control-label col-sm-2">{{'label.input.incorpValidityTillDate' |
+                                    translate}}</label>
+                                    <div class="col-sm-3">
+                                        <input id="incorpValidityTillDate" type="text" name="incorpValidityTillDate"
+                                               datepicker-pop="dd MMMM yyyy" ng-model="first.incorpValidityTillDate"
+                                               is-open="opened1"
+                                               class="form-control"/>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
                         <div class="form-group">
-                           <label class="control-label col-sm-2" for="remarks">{{'label.input.remarks' |
-                              translate}}</label>
-                           <div class="col-sm-3">
-                              <textarea type="text" id="remarks" ng-model="formData.clientNonPersonDetails.remarks"
-                                 rows="4" class="form-control" />
-                           </div>
-                        </div>
-                     </div>
-                  </div>
-                  <div class="form-group">
-                     <label class="control-label col-sm-2" for="externalId">{{'label.input.externalid' |
-                        translate}}</label>
-                     <div class="col-sm-3">
-                        <input type="text" id="externalId" name="externalId" ng-model="formData.externalId"
-                           class="form-control" />
-                     </div>
-                  </div>
-
-                  <div class="form-group">
-                     <label class="control-label col-sm-2" for="oldCustNumber">{{'label.input.old.customer.number' |
-                        translate}}</label>
-                     <div class="col-sm-3">
-                        <input type="text" id="oldCustNumber" name="oldCustNumber" ng-model="formData.oldCustomerNumber"
-                           class="form-control" />
-                     </div>
-                  </div>
-                  <div class="form-group" has-permission="ACTIVATE_CLIENT">
-                     <label class="control-label col-sm-2">{{'label.input.active' | translate}}</label>
-                     <div class="col-sm-3">
-                        <input id="activeCheckbox" type="checkbox" ng-model="formData.active"
-                           data-ng-change="setChoice()">
-                     </div>
-                     <div data-ng-switch on="choice">
-                        <div data-ng-switch-when="1">
-                           <label class="control-label col-sm-2">{{'label.input.activationdate' | translate}}<span
-                                 class="required">*</span></label>
-                           <div class="col-sm-3">
-                              <input id="activationDate" type="text" name="activationdate" datepicker-pop="dd MMMM yyyy"
-                                 ng-model="first.date" is-open="opened" min="'2000-01-01'" max="restrictDate"
-                                 class="form-control" />
-                           </div>
-                        </div>
-                     </div>
-                  </div>
-                  <div class="form-group">
-                     <label class="control-label col-sm-2">{{'label.input.submittedon' | translate}}</label>
-                     <div class="col-sm-3">
-                        <input id="submittedon" type="text" name="submittedon" datepicker-pop="dd MMMM yyyy"
-                           ng-model="first.submitondate" is-open="opened1" min="'2000-01-01'" max="restrictDate"
-                           class="form-control" />
-                     </div>
-                  </div>
-                  <div class="form-group" ng-show="showSavingOptions">
-                     <label class="control-label col-sm-2">{{ 'label.input.opensavingsproduct' | translate
-                        }}&nbsp;</label>
-                     <div class="col-sm-3">
-                        <input id="opensavingsproduct" type="checkbox" ng-model="savings.opensavingsproduct"
-                           ng-true-value="true" ng-false-value="false">
-                     </div>
-                     <div ng-show="savings.opensavingsproduct">
-                        <label class="control-label col-sm-2">{{'label.input.savingproduct' | translate}}</label>
-                        <div class="col-sm-3">
-                           <select id="savingsProductId" ng-model="formData.savingsProductId"
-                              ng-options="savingProduct.id as savingProduct.name for savingProduct in savingproducts"
-                              value="{{savingProduct.id}}" class="form-control">
-                              <option value="">--{{'label.menu.selectsavingproduct' | translate}}--</option>
-                           </select>
+                            <label class="control-label col-sm-2">{{'label.input.clienttype' | translate}}</label>
+                            <div class="col-sm-3">
+                                <select id="clienttypeId" ng-model="formData.clientTypeId" class="form-control"
+                                        ng-options="clienttype.id as clienttype.name for clienttype in clienttypeOptions"
+                                        value="{{clienttype.id}}">
+                                    <option value="">--{{'label.menu.clienttype' | translate}}--</option>
+                                </select>
+                            </div>
+                            <label class="control-label col-sm-2">{{'label.input.clientclassification' | translate}}</label>
+                            <div class="col-sm-3">
+                                <select id="clientClassificationId" ng-model="formData.clientClassificationId"
+                                        class="form-control"
+                                        ng-options="clientClassification.id as clientClassification.name for clientClassification in clientClassificationOptions"
+                                        value="{{clientClassification.id}}">
+                                    <option value="">--{{'label.menu.clientclassification' | translate}}--</option>
+                                </select>
+                            </div>
+                        </div>
+                        <div data-ng-switch on="showNonPersonOptions">
+                            <div data-ng-switch-when="true">
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="incorpNumber">{{'label.input.incorpNumber' |
+                                    translate}}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="incorpNumber"
+                                               ng-model="formData.clientNonPersonDetails.incorpNumber"
+                                               class="form-control"/>
+                                    </div>
+                                    <label class="control-label col-sm-2">{{'label.input.mainBusinessLine' | translate}}</label>
+                                    <div class="col-sm-3">
+                                        <select id="mainBusinessLineId"
+                                                ng-model="formData.clientNonPersonDetails.mainBusinessLineId"
+                                                class="form-control"
+                                                ng-options="mainBusinessLine.id as mainBusinessLine.name for mainBusinessLine in clientNonPersonMainBusinessLineOptions"
+                                                value="{{mainBusinessLine.id}}">
+                                            <option value="">--{{'label.menu.mainBusinessLine' | translate}}--</option>
+                                        </select>
+                                    </div>
+                                </div>
+                            </div>
                         </div>
-                     </div>
-                  </div>
-                  <div class="form-group">
-                     <div class="form-group">
-                        <div class="control-label col-sm-3">
-                           <h3><strong>{{ 'label.heading.familymembers' | translate }}</strong>&nbsp;<a
-                                 ng-click="addFamilyMember()"><i class="fa fa-plus"
-                                    title="{{'label.button.addfamilymember' | translate}}"></i></a></h3>
+                        <div data-ng-switch on="showNonPersonOptions">
+                            <div data-ng-switch-when="true">
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2">{{'label.input.constitution' | translate}}<span
+                                            class="required"></span></label>
+                                    <div class="col-sm-3">
+                                        <select id="constitutionId" name="constitution"
+                                                ng-model="formData.clientNonPersonDetails.constitutionId"
+                                                class="form-control"
+                                                ng-options="constitution.id as constitution.name for constitution in clientNonPersonConstitutionOptions"
+                                                value="{{constitution.id}}">
+                                            <option value="">--{{'label.menu.constitution' | translate}}--</option>
+                                        </select>
+                                    </div>
+                                    <div class="col-sm-2">
+                                    </div>
+                                </div>
+                            </div>
                         </div>
+                        <div data-ng-switch on="showNonPersonOptions">
+                            <div data-ng-switch-when="true">
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2" for="remarks">{{'label.input.remarks' |
+                                    translate}}</label>
+                                    <div class="col-sm-3">
+                              <textarea type="text" id="remarks" ng-model="formData.clientNonPersonDetails.remarks"
+                                        rows="4" class="form-control"/>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+
 
-                     </div>
 
-                     <div ng-repeat="family in familyArray">
 
                         <div class="form-group">
-                           <div class="control-label col-sm-2">
-                              <label>{{ 'label.input.relationship' | translate }}<span class="required">*</span></label>
-                           </div>
-                           <div class="col-sm-3">
-                              <select chosen="relationshipIdOptions" id="relationshipIdOption"
-                                 ng-model="familyArray[$index].relationshipId" class="form-control"
-                                 ng-options="relationshipIdOption.id as relationshipIdOption.name for relationshipIdOption in relationshipIdOptions track by relationshipIdOption.id"
-                                 value="formData.relationshipId"></select>
-                           </div>
-                           <div class="col-sm-2">
-                              <form-validate valattributeform="createclientform" valattribute="addressType" />
-                           </div>
-                           <a ng-click="removeFamilyMember($index)" uib-tooltip="{{'label.remove.row' | translate}}"><i
-                                 class="fa fa-times"></i></a>
+                            <label class="control-label col-sm-2" for="externalId">{{'label.input.externalid' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" id="externalId" name="externalId" ng-model="formData.externalId"
+                                       class="form-control"/>
+                            </div>
+
+                            <label class="control-label col-sm-2" for="externalId">{{'label.input.loanCycle' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" id="loanCycle" name="loanCycle" ng-model="formData.loanCycle" required late-validate
+                                       class="form-control"/>
+                            </div>
                         </div>
 
+                        <div class="form-group">
+                            <label class="control-label col-sm-2"
+                                   for="oldCustNumber">{{'label.input.old.customer.number' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" id="oldCustNumber" name="oldCustNumber"
+                                       ng-model="formData.oldCustomerNumber"
+                                       class="form-control"/>
+                            </div>
+                        </div>
 
                         <div class="form-group">
-                           <label class="control-label col-sm-2" for="firstName">{{'label.input.firstname' | translate
-                              }}</label>
+                            <label class="control-label col-sm-2"
+                                   for="groupmem">{{'label.input.groupno' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" id="groupno" name="groupno"
+                                       ng-model="formData.groupNumber"
+                                       class="form-control"/>
+                            </div>
 
-                           <div class="col-sm-3">
-                              <input type="text" id="firstName" name="firstName"
-                                 ng-model="familyArray[$index].firstName" class="form-control">
-                           </div>
+                            <label class="control-label col-sm-2"
+                                   for="groupmem">{{'label.input.groupmember' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" id="groupmem" name="groupme"
+                                       ng-model="formData.groupMember"
+                                       class="form-control"/>
+                            </div>
+                        </div>
+
+                        <div class="form-group">
+                            <label class="control-label col-sm-2"
+                                   for="groupmem">{{'label.input.statusingroup' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" id="groupstatus" name="groupstatus"
+                                       ng-model="formData.statusInGroup"
+                                       class="form-control"/>
+                            </div>
 
+                            <label class="control-label col-sm-2"
+                                   for="groupmem">{{'label.input.retirementreason' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" id="retReason" name="retReason"
+                                       ng-model="formData.retirementReason"
+                                       class="form-control"/>
+                            </div>
                         </div>
 
                         <div class="form-group">
-                           <label class="control-label col-sm-2" for="middleName">{{'label.input.middlename' | translate
-                              }}</label>
+                            <label class="control-label col-sm-2"
+                                   for="civilstatus">{{'label.input.civilstatus' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" id="civilstatus" name="civilstatus"
+                                       ng-model="formData.civilStatus"
+                                       class="form-control"/>
+                            </div>
 
-                           <div class="col-sm-3">
-                              <input type="text" id="middleName" name="middleName"
-                                 ng-model="familyArray[$index].middleName" class="form-control">
-                           </div>
+                            <label class="control-label col-sm-2"
+                                   for="education">{{'label.input.education' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" id="education" name="education"
+                                       ng-model="formData.educationLevel"
+                                       class="form-control"/>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="control-label col-sm-2"
+                                   for="ethinicity">{{'label.input.ethinicity' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" id="ethinicity" name="ethinicity"
+                                       ng-model="formData.ethinicity"
+                                       class="form-control"/>
+                            </div>
 
+                            <label class="control-label col-sm-2"
+                                   for="nationality">{{'label.input.nationality' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" id="nationality" name="nationality"
+                                       ng-model="formData.nationality"
+                                       class="form-control"/>
+                            </div>
                         </div>
 
                         <div class="form-group">
-                           <label class="control-label col-sm-2" for="lastName">{{'label.input.lastname' | translate
-                              }}</label>
+                            <label class="control-label col-sm-2"
+                                   for="languages">{{'label.input.languages' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <textarea type="text" rows="3" id="languages" name="languages"
+                                          ng-model="formData.languages"
+                                          class="form-control"></textarea>
+                            </div>
+
+                            <label class="control-label col-sm-2" ng-if="economicSectorOptions"
+                                   for="econSector">{{'label.input.economicsector' |
+                            translate}}</label>
+                            <div class="col-sm-3" ng-if="economicSectorOptions">
+                                <select chosen="sector" id="econSector" ng-model="formData.economicSector" class="form-control"
+                                        ng-options="sector.id as sector.name for sector in economicSectorOptions" ng-change="updateActivities()"
+                                        value="{{sector.id}}">
+                                    <option value="">--{{'label.input.economicsector' | translate}}--</option>
+                                </select>
+                            </div>
+                        </div>
 
-                           <div class="col-sm-3">
-                              <input type="text" id="lastName" name="lastName" ng-model="familyArray[$index].lastName"
-                                 class="form-control">
-                           </div>
+                        <div class="form-group" ng-if="formData.economicSector && economicActivityOptions">
+                            <label class="control-label col-sm-2"
+                                   for="languages">{{'label.input.economicactivity' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <select chosen="economicActivity" id="" ng-model="formData.economicActivity" class="form-control"
+                                        ng-options="activity.id as activity.name for activity in economicActivityOptions"
+                                        value="{{activity.id}}">
+                                    <option value="">--{{'label.input.economicactivity' | translate}}--</option>
+                                </select>
+                            </div>
 
+                            <label class="control-label col-sm-2"
+                                   for="familyReference">{{'label.input.familyreference' |
+                            translate}}</label>
+                            <div class="col-sm-3">
+                                <input type="text" rows="3" id="familyReference" name="familyReference"
+                                       ng-model="formData.familyReference"
+                                       class="form-control"/>
+                            </div>
                         </div>
 
 
+                        <div class="form-group" has-permission="ACTIVATE_CLIENT">
+                            <label class="control-label col-sm-2">{{'label.input.active' | translate}}</label>
+                            <div class="col-sm-3">
+                                <input id="activeCheckbox" type="checkbox" ng-model="formData.active"
+                                       data-ng-change="setChoice()">
+                            </div>
+                            <div data-ng-switch on="choice">
+                                <div data-ng-switch-when="1">
+                                    <label class="control-label col-sm-2">{{'label.input.activationdate' | translate}}<span
+                                            class="required">*</span></label>
+                                    <div class="col-sm-3">
+                                        <input id="activationDate" type="text" name="activationdate"
+                                               datepicker-pop="dd MMMM yyyy"
+                                               ng-model="first.date" is-open="opened" min="'2000-01-01'"
+                                               max="restrictDate"
+                                               class="form-control"/>
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="form-group">
+                            <label class="control-label col-sm-2">{{'label.input.submittedon' | translate}}</label>
+                            <div class="col-sm-3">
+                                <input id="submittedon" type="text" name="submittedon" datepicker-pop="dd MMMM yyyy"
+                                       ng-model="first.submitondate" is-open="opened1" min="'2000-01-01'"
+                                       max="restrictDate"
+                                       class="form-control"/>
+                            </div>
+                        </div>
+                        <div class="form-group" ng-show="showSavingOptions">
+                            <label class="control-label col-sm-2">{{ 'label.input.opensavingsproduct' | translate
+                                }}&nbsp;</label>
+                            <div class="col-sm-3">
+                                <input id="opensavingsproduct" type="checkbox" ng-model="savings.opensavingsproduct"
+                                       ng-true-value="true" ng-false-value="false">
+                            </div>
+                            <div ng-show="savings.opensavingsproduct">
+                                <label class="control-label col-sm-2">{{'label.input.savingproduct' | translate}}</label>
+                                <div class="col-sm-3">
+                                    <select id="savingsProductId" ng-model="formData.savingsProductId"
+                                            ng-options="savingProduct.id as savingProduct.name for savingProduct in savingproducts"
+                                            value="{{savingProduct.id}}" class="form-control">
+                                        <option value="">--{{'label.menu.selectsavingproduct' | translate}}--</option>
+                                    </select>
+                                </div>
+                            </div>
+                        </div>
+                        <hr/>
                         <div class="form-group">
-                           <label class="control-label col-sm-2" for="qualification">{{ 'label.input.qualification' |
-                              translate }}</label>
+                            <div class="form-group">
+                                <div class="control-label col-sm-3">
+                                    <h3><strong>{{ 'label.heading.contact.information' | translate }}</strong>&nbsp</h3>
+                                </div>
+                            </div>
+                            <div>
+                                <div class="form-group">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.client.area' | translate }}<span
+                                                class="required">*</span></label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <select id="clientArea"
+                                                ng-model="formData.clientArea" class="form-control" required="required"
+                                                ng-options="area.id as area.name for area in clientAreaOptions "
+                                                value="{{area.id}}"></select>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="clientArea"/>
+                                    </div>
+                                </div>
 
-                           <div class="col-sm-3">
-                              <input type="text" id="qualification" name="qualification"
-                                 ng-model="familyArray[$index].qualification" class="form-control">
-                           </div>
+                                <div class="form-group">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.client.housingtype' | translate }}<span
+                                                class="required">*</span></label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <select id="housing"
+                                                ng-model="formData.housingTypeId" class="form-control" required="required"
+                                                ng-options="housing.id as housing.name for housing in housingTypeOptions "
+                                                value="{{housing.id}}"></select>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="housing"/>
+                                    </div>
+                                </div>
 
-                        </div>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2">{{ 'label.input.residenceYears' | translate }}<span
+                                            class="required">*</span>
+                                    </label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="residenceYears" class="form-control" name="residenceYears"
+                                               ng-model="formData.residenceYears" required late-validate number=true/>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="residenceYears"></form-validate>
+                                    </div>
+                                </div>
 
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2">{{ 'label.input.communityYears' | translate }}<span
+                                            class="required">*</span>
+                                    </label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="communityYears" class="form-control" name="communityYears"
+                                               ng-model="formData.communityYears" required late-validate number=true/>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="residenceYears"></form-validate>
+                                    </div>
+                                </div>
 
-                        <div class="form-group">
-                           <label class="control-label col-sm-2" for="mobileNumber">{{ 'label.input.mobileNumber' |
-                              translate }}</label>
+                                <div class="form-group">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.client.publicservice' | translate }}<span
+                                                class="required">*</span></label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <table>
+                                            <tr ng-repeat="publicServiceOption in publicServiceOptions">
+                                                <td>
+                                                    <input id="{{publicServiceOption.id}}" type="checkbox" name='publicService' data-ng-model="publicServiceChecks[publicServiceOption.id]" data-ng-change="checkPublicService(publicServiceOption.id)">
+                                                    &nbsp;&nbsp;<label>{{publicServiceOption.name}}</label>
+                                                </td>
+                                            </tr>
+                                        </table>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="publicService"></form-validate>
+                                    </div>
+                                </div>
 
-                           <div class="col-sm-3">
-                              <input type="text" id="mobileNumber" name="mobileNumber"
-                                 ng-model="familyArray[$index].mobileNumber" class="form-control">
-                           </div>
+                                <div class="form-group">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.client.department' | translate }}<span
+                                                class="required">*</span></label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <select id="department"
+                                                ng-model="formData.departmentId" class="form-control" required="required"
+                                                ng-options="department.id as department.name for department in departamentoOptions "
+                                                value="{{department.id}}"></select>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="department"/>
+                                    </div>
+                                </div>
 
-                        </div>
+                                <div class="form-group">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.client.municipal' | translate }}<span
+                                                class="required">*</span></label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <select id="municipal"
+                                                ng-model="formData.municipalId" class="form-control" required="required"
+                                                ng-options="municipal.id as municipal.name for municipal in municipioOptions "
+                                                value="{{municipal.id}}"></select>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="municipal"/>
+                                    </div>
+                                </div>
 
-                        <div class="form-group">
-                           <label class="control-label col-sm-2" for="age">{{ 'label.input.age' | translate }}</label>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="village">{{ 'label.input.village' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="village" name="village" ng-model="formData.village"
+                                               class="form-control">
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="village"/>
+                                    </div>
+                                </div>
 
-                           <div class="col-sm-3">
-                              <input type="text" id="age" name="age" ng-model="familyArray[$index].age"
-                                 class="form-control">
-                           </div>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="reference">{{ 'label.input.referencedata' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="reference" name="reference"
+                                               ng-model="formData.referenceData"
+                                               class="form-control">
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="reference"/>
+                                    </div>
+                                </div>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="reference">{{ 'label.input.street' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="street" name="street" ng-model="formData.street"
+                                               class="form-control">
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="street"/>
+                                    </div>
+                                </div>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="reference">{{ 'label.input.avenue' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="avenue" name="avenue" ng-model="formData.avenue"
+                                               class="form-control">
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="avenue"/>
+                                    </div>
+                                </div>
 
-                        </div>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="reference">{{ 'label.input.streetNumber' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="streetNumber" name="street" ng-model="formData.streetNumber"
+                                               class="form-control">
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="streetNumber"/>
+                                    </div>
+                                </div>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="reference">{{ 'label.input.colony' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="colony" name="colony" ng-model="formData.colony"
+                                               class="form-control">
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="colony"/>
+                                    </div>
+                                </div>
 
-                        <div class="form-group">
-                           <label class="control-label col-sm-2" for="isDependent">{{ 'label.input.isDependent' |
-                              translate }}</label>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="reference">{{ 'label.input.sector' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="sector" name="sector" ng-model="formData.sector"
+                                               class="form-control">
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="sector"/>
+                                    </div>
+                                </div>
 
-                           <div class="col-sm-3">
-                              <input type="checkbox" class="input-mini-small" id="isDependent" name="isDependent"
-                                 ng-model="familyArray[$index].isDependent">
-                           </div>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="reference">{{ 'label.input.batch' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="batch" name="batch" ng-model="formData.batch"
+                                               class="form-control">
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="batch"/>
+                                    </div>
+                                </div>
 
-                        </div>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="reference">{{ 'label.input.square' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="square" name="square" ng-model="formData.square"
+                                               class="form-control">
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="square"/>
+                                    </div>
+                                </div>
 
-                        <div class="form-group">
-                           <div class="control-label col-sm-2">
-                              <label>{{ 'label.input.gender' | translate }}</label>
-                           </div>
-                           <div class="col-sm-3">
-                              <select chosen="genderIdOptions" id="genderIdOption"
-                                 ng-model="familyArray[$index].genderId" class="form-control"
-                                 ng-options="genderIdOption.id as genderIdOption.name for genderIdOption in genderIdOptions track by genderIdOption.id"
-                                 value="formData.genderId"></select>
-                           </div>
-                        </div>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="reference">{{ 'label.input.zone' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="zone" name="zone" ng-model="formData.zone"
+                                               class="form-control">
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="zone"/>
+                                    </div>
+                                </div>
 
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="reference">{{ 'label.input.lightDeviceNumber' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="lightDeviceNumber" name="lightDeviceNumber"
+                                               ng-model="formData.lightDeviceNumber"
+                                               class="form-control">
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="lightDeviceNumber"></form-validate>
+                                    </div>
+                                </div>
 
-                        <div class="form-group">
-                           <div class="control-label col-sm-2">
-                              <label>{{ 'label.input.profession' | translate }}</label>
-                           </div>
-                           <div class="col-sm-3">
-                              <select chosen="professionIdOptions" id="professionIdOption"
-                                 ng-model="familyArray[$index].professionId" class="form-control"
-                                 ng-options="professionIdOption.id as professionIdOption.name for professionIdOption in professionIdOptions track by professionIdOption.id"
-                                 value="formData.professionId"></select>
-                           </div>
-                        </div>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2" for="mobileNo">{{'label.input.mobilenumber' |
+                                    translate}}<span class="required">*</span></label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="mobileNo" name="mobileNo" ng-model="formData.mobileNo" required="required" class="form-control"/>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="mobileNo"/>
+                                    </div>
+                                </div>
 
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2" for="homeNumber">{{'label.input.homeNumber' |
+                                    translate}}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="homeNumber" name="homeNumber" ng-model="formData.homeNumber" class="form-control"/>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="homeNumber"/>
+                                    </div>
+                                </div>
+
+                            </div>
 
-                        <div class="form-group">
-                           <div class="control-label col-sm-2">
-                              <label>{{ 'label.input.maritalstatus' | translate }}</label>
-                           </div>
-                           <div class="col-sm-3">
-                              <select chosen="maritalStatusIdOptions" id="maritalStatusId"
-                                 ng-model="familyArray[$index].maritalStatusId" class="form-control"
-                                 ng-options="maritalStatusIdOption.id as maritalStatusIdOption.name for maritalStatusIdOption in maritalStatusIdOptions track by maritalStatusIdOption.id"
-                                 value="formData.maritalStatusId"></select>
-                           </div>
                         </div>
 
                         <div class="form-group">
-                           <label class="control-label col-sm-2" for="dateofbirth">{{ 'label.input.dateofbirth' |
-                              translate }}</label>
+                            <div class="form-group">
+                                <div class="control-label col-sm-3">
+                                    <h3><strong>{{ 'label.heading.familymembers' | translate }}</strong>&nbsp;<a
+                                            ng-click="addFamilyMember()"><i class="fa fa-plus"
+                                                                            title="{{'label.button.addfamilymember' | translate}}"></i></a>
+                                    </h3>
+                                </div>
 
-                           <div class="col-sm-3">
-                              <input id="dateofbirth" type="text" name="dateofbirth" datepicker-pop="dd MMMM yyyy"
-                                 ng-model="familyArray[$index].dateOfBirth" is-open="opened1" min="minDate "
-                                 max="restrictDate" class="form-control" />
-                           </div>
+                            </div>
 
-                        </div>
+                            <div ng-repeat="family in familyArray">
+
+                                <div class="form-group">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.relationship' | translate }}<span
+                                                class="required">*</span></label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <select chosen="relationshipIdOptions" id="relationshipIdOption"
+                                                ng-model="familyArray[$index].relationshipId" class="form-control"
+                                                ng-options="relationshipIdOption.id as relationshipIdOption.name for relationshipIdOption in relationshipIdOptions track by relationshipIdOption.id"
+                                                value="formData.relationshipId"></select>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="addressType"/>
+                                    </div>
+                                    <a ng-click="removeFamilyMember($index)"
+                                       uib-tooltip="{{'label.remove.row' | translate}}"><i
+                                            class="fa fa-times"></i></a>
+                                </div>
+
+
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="firstName">{{'label.input.firstname' | translate
+                                        }}</label>
+
+                                    <div class="col-sm-3">
+                                        <input type="text" id="firstName" name="firstName"
+                                               ng-model="familyArray[$index].firstName" class="form-control">
+                                    </div>
+
+                                </div>
+
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="middleName">{{'label.input.middlename' | translate
+                                        }}</label>
+
+                                    <div class="col-sm-3">
+                                        <input type="text" id="middleName" name="middleName"
+                                               ng-model="familyArray[$index].middleName" class="form-control">
+                                    </div>
+
+                                </div>
+
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="lastName">{{'label.input.lastname' | translate
+                                        }}</label>
+
+                                    <div class="col-sm-3">
+                                        <input type="text" id="lastName" name="lastName"
+                                               ng-model="familyArray[$index].lastName"
+                                               class="form-control">
+                                    </div>
+
+                                </div>
+
+
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="qualification">{{ 'label.input.qualification' |
+                                    translate }}</label>
+
+                                    <div class="col-sm-3">
+                                        <input type="text" id="qualification" name="qualification"
+                                               ng-model="familyArray[$index].qualification" class="form-control">
+                                    </div>
 
+                                </div>
 
 
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="mobileNumber">{{ 'label.input.mobileNumber' |
+                                    translate }}</label>
 
+                                    <div class="col-sm-3">
+                                        <input type="text" id="mobileNumber" name="mobileNumber"
+                                               ng-model="familyArray[$index].mobileNumber" class="form-control">
+                                    </div>
 
+                                </div>
 
-                     </div>
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2" for="age">{{ 'label.input.age' | translate
+                                        }}</label>
 
-                  </div>
+                                    <div class="col-sm-3">
+                                        <input type="text" id="age" name="age" ng-model="familyArray[$index].age"
+                                               class="form-control">
+                                    </div>
+
+                                </div>
+
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="isDependent">{{ 'label.input.isDependent' |
+                                    translate }}</label>
+
+                                    <div class="col-sm-3">
+                                        <input type="checkbox" class="input-mini-small" id="isDependent"
+                                               name="isDependent"
+                                               ng-model="familyArray[$index].isDependent">
+                                    </div>
+
+                                </div>
+
+                                <div class="form-group">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.gender' | translate }}</label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <select chosen="genderIdOptions" id="genderIdOption"
+                                                ng-model="familyArray[$index].genderId" class="form-control"
+                                                ng-options="genderIdOption.id as genderIdOption.name for genderIdOption in genderIdOptions track by genderIdOption.id"
+                                                value="formData.genderId"></select>
+                                    </div>
+                                </div>
+
+
+                                <div class="form-group">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.profession' | translate }}</label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <select chosen="professionIdOptions" id="professionIdOption"
+                                                ng-model="familyArray[$index].professionId" class="form-control"
+                                                ng-options="professionIdOption.id as professionIdOption.name for professionIdOption in professionIdOptions track by professionIdOption.id"
+                                                value="formData.professionId"></select>
+                                    </div>
+                                </div>
+
+
+                                <div class="form-group">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.maritalstatus' | translate }}</label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <select chosen="maritalStatusIdOptions" id="maritalStatusId"
+                                                ng-model="familyArray[$index].maritalStatusId" class="form-control"
+                                                ng-options="maritalStatusIdOption.id as maritalStatusIdOption.name for maritalStatusIdOption in maritalStatusIdOptions track by maritalStatusIdOption.id"
+                                                value="formData.maritalStatusId"></select>
+                                    </div>
+                                </div>
+
+                                <div class="form-group">
+                                    <label class="control-label col-sm-2"
+                                           for="dateofbirth">{{ 'label.input.dateofbirth' |
+                                    translate }}</label>
+
+                                    <div class="col-sm-3">
+                                        <input id="dateofbirth" type="text" name="dateofbirth"
+                                               datepicker-pop="dd MMMM yyyy"
+                                               ng-model="familyArray[$index].dateOfBirth" is-open="opened1"
+                                               min="minDate "
+                                               max="restrictDate" class="form-control"/>
+                                    </div>
+
+                                </div>
+
+
+                            </div>
 
-                  <div ng-show="enableAddress" class="form-group">
-                     <div class="form-group">
-                        <div class="control-label col-sm-2">
-                           <h3><strong>{{ 'label.input.address' | translate }}</strong>&nbsp;<a
-                                 ng-click="addAddress()"><i class="fa fa-plus"
-                                    title="{{'label.button.addAddress' | translate}}"></i></a></h3>
                         </div>
-                     </div>
-                     <div ng-repeat="addr in addressArray">
-                        <div class="form-group">
-                           <div class="control-label col-sm-2">
-                              <label>{{ 'label.input.addressType' | translate }}<span class="required">*</span></label>
-                           </div>
-                           <div class="col-sm-3">
-                              <select chosen="addressTypes" name="addressType"
-                                 ng-model="addressArray[$index].addressTypeId" class="form-control"
-                                 ng-options="addressType.id as addressType.name for addressType in addressTypes "
-                                 value="addressTypeId" required late-validate></select>
-                           </div>
-                           <div class="col-sm-2">
-                              <form-validate valattributeform="createclientform" valattribute="addressType" />
-                           </div>
-                           <a ng-click="removeAddress($index)" uib-tooltip="{{'label.remove.row' | translate}}"><i
-                                 class="fa fa-times"></i></a>
-                        </div>
-                        <div class="form-group" ng-show="street">
-                           <div class="control-label col-sm-2">
-                              <label>{{ 'label.input.street' | translate }}</label>
-                           </div>
-                           <div class="col-sm-3">
-                              <input type="text" name="street" ng-model="addressArray[$index].street"
-                                 class="form-control" late-validate />
-                           </div>
-                           <div class="col-sm-2">
-                              <form-validate valattributeform="createclientform" valattribute="street" />
-                           </div>
-                        </div>
-
-
-                        <div class="form-group" ng-show="addressLine1">
-                           <label class="control-label col-sm-2">{{ 'label.input.addressline1' | translate }}</label>
-                           <div class="col-sm-3">
-                              <input type="text" name="addressline1" ng-model="addressArray[$index].addressLine1"
-                                 class="form-control">
-                           </div>
-                        </div>
-                        <div class="form-group" ng-show="addressLine2">
-                           <label class="control-label col-sm-2">{{ 'label.input.addressline2' | translate }}</label>
-                           <div class="col-sm-3">
-                              <input type="text" name="addressline2" ng-model="addressArray[$index].addressLine2"
-                                 class="form-control">
-                           </div>
-                        </div>
-                        <div class="form-group" ng-show="addressLine3">
-                           <label class="control-label col-sm-2">{{ 'label.input.addressline3' | translate }}</label>
-                           <div class="col-sm-3">
-                              <input type="text" name="addressline3" ng-model="addressArray[$index].addressLine3"
-                                 class="form-control">
-                           </div>
-                        </div>
-
-                        <div class="form-group" ng-show="city">
-                           <label class="control-label col-sm-2">{{ 'label.input.city' | translate }}</label>
-                           <div class="col-sm-3">
-                              <input type="text" name="city" ng-model="addressArray[$index].city" class="form-control">
-                           </div>
-                        </div>
-                        <div class="form-group" ng-show="townVillage">
-                           <label class="control-label col-sm-2">{{ 'label.input.town_village' | translate }}</label>
-                           <div class="col-sm-3">
-                              <input type="text" name="town_village" ng-model="addressArray[$index].townVillage"
-                                 class="form-control">
-                           </div>
-                        </div>
-                        <div class="form-group" ng-show="countyDistrict">
-                           <label class="control-label col-sm-2">{{ 'label.input.county_district' | translate }}</label>
-                           <div class="col-sm-3">
-                              <input type="text" name="county_district" ng-model="addressArray[$index].countyDistrict"
-                                 class="form-control">
-                           </div>
-                        </div>
-                        <div class="form-group" ng-show="stateProvinceId">
-                           <div class="control-label col-sm-2">
-                              <label>{{ 'label.input.state_province' | translate }}</label>
-                           </div>
-                           <div class="col-sm-3">
-                              <select chosen="stateOptions" ng-model="addressArray[$index].stateProvinceId"
-                                 class="form-control"
-                                 ng-options="stateOption.id as stateOption.name for stateOption in stateOptions track by stateOption.id"
-                                 value="stateProvinceId"></select>
-                           </div>
-                        </div>
-                        <div>
-                        </div>
-                        <div class="form-group" ng-show="countryId">
-                           <div class="control-label col-sm-2">
-                              <label>{{ 'label.input.country' | translate }}</label>
-                           </div>
-                           <div class="col-sm-3">
-                              <select chosen="countryOptions" ng-model="addressArray[$index].countryId"
-                                 class="form-control"
-                                 ng-options="countryOption.id as countryOption.name for countryOption in countryOptions track by countryOption.id"
-                                 value="countryId"></select>
-                           </div>
-                        </div>
-                        <div class="form-group" ng-show="postalCode">
-                           <label class="control-label col-sm-2">{{ 'label.input.postal_code' | translate }}</label>
-                           <div class="col-sm-3">
-                              <input type="text" name="postal_code" ng-model="addressArray[$index].postalCode"
-                                 class="form-control">
-                           </div>
-                        </div>
-                        <div class="form-group" ng-show="latitude">
-                           <label class="control-label col-sm-2">{{ 'label.input.latitude' | translate }}</label>
-                           <div class="col-sm-3">
-                              <input type="text" name="latitude" ng-model="addressArray[$index].latitude"
-                                 class="form-control">
-                           </div>
-                        </div>
-                        <div class="form-group" ng-show="longitude">
-                           <label class="control-label col-sm-2">{{ 'label.input.longitude' | translate }}</label>
-                           <div class="col-sm-3">
-                              <input type="text" name="longitude" ng-model="addressArray[$index].longitude"
-                                 class="form-control">
-                           </div>
-                        </div>
-                        <div class="form-group" ng-show="isActive">
-                           <label class="control-label col-sm-2">{{'label.input.is_active' | translate}} </label>
-                           <div class="col-sm-3">
-                              <input class="input-mini-small" type="checkbox" ng-model="addressArray[$index].isActive">
-                           </div>
-                        </div>
-                     </div>
-                  </div>
-                  <div class="pull-right">
-                     <button id="save1" class="btn btn-primary" ng-if="datatables" wz-next>
-                        {{'label.button.proceed' | translate}}
-                     </button>
-                     <div ng-if="!datatables">
-                        <a id="cancel" ng-href="{{cancel}}" class="btn btn-default">{{'label.button.cancel' |
-                           translate}}</a>
-                        <button id="save" type="submit" class="btn btn-primary" ng-hide="blockUI"
-                           has-permission='CREATE_CLIENT'>{{'label.button.save' | translate}}</button>
-                        <button class="btn btn-info" ng-show="blockUI"><strong>{{'label.button.processing' |
-                              translate}}</strong></button>
-                     </div>
-                  </div>
-               </fieldset>
-            </form>
-         </div>
-      </wz-step>
-      <wz-step ng-if="datatables" ng-repeat="datatable in datatables" icon="fa fa-circle-o"
-         wz-title="{{datatable.registeredTableName}}">
-         <div class="card-content">
-            <form class="form-horizontal" ng-submit="submit()">
-               <api-validate></api-validate>
-               <fieldset>
-                  <legend>{{datatable.registeredTableName}}</legend>
-                  <div class="form-group" ng-repeat="columnHeader in datatable.columnHeaderData">
-                     <label class="control-label col-sm-3">{{ columnHeader.columnName | prettifyDataTableColumn }}
-                        <span ng-show="!columnHeader.isColumnNullable" class="required">*</span>
-                     </label>
-                     <div class="col-sm-3">
-                        <input ng-show="fieldType(columnHeader.columnDisplayType) == 'TEXT'" type="text"
-                           ng-model="formData.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
-                           class="form-control" />
-                        <input ng-show="fieldType(columnHeader.columnDisplayType) == 'DATE'" type="text"
-                           datepicker-pop="dd MMMM yyyy"
-                           ng-model="formDat.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
-                           is-open="opened{{$index}}" class="form-control" />
-                        <div ng-show="fieldType(columnHeader.columnDisplayType) == 'DATETIME'" class="form-inline">
-                           <div class="form-group">
-                              <input type="text" datepicker-pop="dd MMMM yyyy"
-                                 ng-model="formDat.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName].date"
-                                 is-open="opened{{$index}}" class="form-control" />
-                           </div>
-                           <div class="form-group">
-                              <input type="time" placeholder="HH:MM:SS"
-                                 ng-model="formDat.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName].time"
-                                 class="form-control" />
-                           </div>
-                        </div>
-                        <div ng-show="fieldType(columnHeader.columnDisplayType) == 'BOOLEAN'">
-                           <label class="radio-inline">
-                              <input type="radio"
-                                 ng-model="formData.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
-                                 value="true" />
-                              {{'label.input.true' | translate}}
-                           </label>
-                           <label class="radio-inline">
-                              <input type="radio"
-                                 ng-model="formData.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
-                                 value="false" />
-                              {{'label.input.false' | translate}}
-                           </label>
-                        </div>
-                        <span data-ng-switch on="columnHeader.columnDisplayType">
+
+                        <div ng-show="enableAddress" class="form-group">
+                            <div class="form-group">
+                                <div class="control-label col-sm-2">
+                                    <h3><strong>{{ 'label.input.address' | translate }}</strong>&nbsp;<a
+                                            ng-click="addAddress()"><i class="fa fa-plus"
+                                                                       title="{{'label.button.addAddress' | translate}}"></i></a>
+                                    </h3>
+                                </div>
+                            </div>
+                            <div ng-repeat="addr in addressArray">
+                                <div class="form-group">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.addressType' | translate }}<span
+                                                class="required">*</span></label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <select chosen="addressTypes" name="addressType"
+                                                ng-model="addressArray[$index].addressTypeId" class="form-control"
+                                                ng-options="addressType.id as addressType.name for addressType in addressTypes "
+                                                value="addressTypeId" required late-validate></select>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="addressType"/>
+                                    </div>
+                                    <a ng-click="removeAddress($index)"
+                                       uib-tooltip="{{'label.remove.row' | translate}}"><i
+                                            class="fa fa-times"></i></a>
+                                </div>
+                                <div class="form-group" ng-show="street">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.street' | translate }}</label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <input type="text" name="street" ng-model="addressArray[$index].street"
+                                               class="form-control" late-validate/>
+                                    </div>
+                                    <div class="col-sm-2">
+                                        <form-validate valattributeform="createclientform" valattribute="street"/>
+                                    </div>
+                                </div>
+
+
+                                <div class="form-group" ng-show="addressLine1">
+                                    <label class="control-label col-sm-2">{{ 'label.input.addressline1' | translate
+                                        }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" name="addressline1"
+                                               ng-model="addressArray[$index].addressLine1"
+                                               class="form-control">
+                                    </div>
+                                </div>
+                                <div class="form-group" ng-show="addressLine2">
+                                    <label class="control-label col-sm-2">{{ 'label.input.addressline2' | translate
+                                        }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" name="addressline2"
+                                               ng-model="addressArray[$index].addressLine2"
+                                               class="form-control">
+                                    </div>
+                                </div>
+                                <div class="form-group" ng-show="addressLine3">
+                                    <label class="control-label col-sm-2">{{ 'label.input.addressline3' | translate
+                                        }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" name="addressline3"
+                                               ng-model="addressArray[$index].addressLine3"
+                                               class="form-control">
+                                    </div>
+                                </div>
+
+                                <div class="form-group" ng-show="city">
+                                    <label class="control-label col-sm-2">{{ 'label.input.city' | translate }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" name="city" ng-model="addressArray[$index].city"
+                                               class="form-control">
+                                    </div>
+                                </div>
+                                <div class="form-group" ng-show="townVillage">
+                                    <label class="control-label col-sm-2">{{ 'label.input.town_village' | translate
+                                        }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" name="town_village"
+                                               ng-model="addressArray[$index].townVillage"
+                                               class="form-control">
+                                    </div>
+                                </div>
+                                <div class="form-group" ng-show="countyDistrict">
+                                    <label class="control-label col-sm-2">{{ 'label.input.county_district' | translate
+                                        }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" name="county_district"
+                                               ng-model="addressArray[$index].countyDistrict"
+                                               class="form-control">
+                                    </div>
+                                </div>
+                                <div class="form-group" ng-show="stateProvinceId">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.state_province' | translate }}</label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <select chosen="stateOptions" ng-model="addressArray[$index].stateProvinceId"
+                                                class="form-control"
+                                                ng-options="stateOption.id as stateOption.name for stateOption in stateOptions track by stateOption.id"
+                                                value="stateProvinceId"></select>
+                                    </div>
+                                </div>
+                                <div>
+                                </div>
+                                <div class="form-group" ng-show="countryId">
+                                    <div class="control-label col-sm-2">
+                                        <label>{{ 'label.input.country' | translate }}</label>
+                                    </div>
+                                    <div class="col-sm-3">
+                                        <select chosen="countryOptions" ng-model="addressArray[$index].countryId"
+                                                class="form-control"
+                                                ng-options="countryOption.id as countryOption.name for countryOption in countryOptions track by countryOption.id"
+                                                value="countryId"></select>
+                                    </div>
+                                </div>
+                                <div class="form-group" ng-show="postalCode">
+                                    <label class="control-label col-sm-2">{{ 'label.input.postal_code' | translate
+                                        }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" name="postal_code" ng-model="addressArray[$index].postalCode"
+                                               class="form-control">
+                                    </div>
+                                </div>
+                                <div class="form-group" ng-show="latitude">
+                                    <label class="control-label col-sm-2">{{ 'label.input.latitude' | translate
+                                        }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" name="latitude" ng-model="addressArray[$index].latitude"
+                                               class="form-control">
+                                    </div>
+                                </div>
+                                <div class="form-group" ng-show="longitude">
+                                    <label class="control-label col-sm-2">{{ 'label.input.longitude' | translate
+                                        }}</label>
+                                    <div class="col-sm-3">
+                                        <input type="text" name="longitude" ng-model="addressArray[$index].longitude"
+                                               class="form-control">
+                                    </div>
+                                </div>
+                                <div class="form-group" ng-show="isActive">
+                                    <label class="control-label col-sm-2">{{'label.input.is_active' | translate}} </label>
+                                    <div class="col-sm-3">
+                                        <input class="input-mini-small" type="checkbox"
+                                               ng-model="addressArray[$index].isActive">
+                                    </div>
+                                </div>
+                            </div>
+                        </div>
+                        <div class="pull-right">
+                            <button id="save1" class="btn btn-primary" ng-if="datatables" wz-next>
+                                {{'label.button.proceed' | translate}}
+                            </button>
+                            <div ng-if="!datatables">
+                                <a id="cancel" ng-href="{{cancel}}" class="btn btn-default">{{'label.button.cancel' |
+                                translate}}</a>
+                                <button id="save" type="submit" class="btn btn-primary" ng-hide="blockUI"
+                                        has-permission='CREATE_CLIENT'>{{'label.button.save' | translate}}
+                                </button>
+                                <button class="btn btn-info" ng-show="blockUI"><strong>{{'label.button.processing' |
+                                translate}}</strong></button>
+                            </div>
+                        </div>
+                    </fieldset>
+                </form>
+            </div>
+        </wz-step>
+        <wz-step ng-if="datatables" ng-repeat="datatable in datatables" icon="fa fa-circle-o"
+                 wz-title="{{datatable.registeredTableName}}">
+            <div class="card-content">
+                <form class="form-horizontal" ng-submit="submit()">
+                    <api-validate></api-validate>
+                    <fieldset>
+                        <legend>{{datatable.registeredTableName}}</legend>
+                        <div class="form-group" ng-repeat="columnHeader in datatable.columnHeaderData">
+                            <label class="control-label col-sm-3">{{ columnHeader.columnName | prettifyDataTableColumn
+                                }}
+                                <span ng-show="!columnHeader.isColumnNullable" class="required">*</span>
+                            </label>
+                            <div class="col-sm-3">
+                                <input ng-show="fieldType(columnHeader.columnDisplayType) == 'TEXT'" type="text"
+                                       ng-model="formData.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
+                                       class="form-control"/>
+                                <input ng-show="fieldType(columnHeader.columnDisplayType) == 'DATE'" type="text"
+                                       datepicker-pop="dd MMMM yyyy"
+                                       ng-model="formDat.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
+                                       is-open="opened{{$index}}" class="form-control"/>
+                                <div ng-show="fieldType(columnHeader.columnDisplayType) == 'DATETIME'"
+                                     class="form-inline">
+                                    <div class="form-group">
+                                        <input type="text" datepicker-pop="dd MMMM yyyy"
+                                               ng-model="formDat.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName].date"
+                                               is-open="opened{{$index}}" class="form-control"/>
+                                    </div>
+                                    <div class="form-group">
+                                        <input type="time" placeholder="HH:MM:SS"
+                                               ng-model="formDat.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName].time"
+                                               class="form-control"/>
+                                    </div>
+                                </div>
+                                <div ng-show="fieldType(columnHeader.columnDisplayType) == 'BOOLEAN'">
+                                    <label class="radio-inline">
+                                        <input type="radio"
+                                               ng-model="formData.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
+                                               value="true"/>
+                                        {{'label.input.true' | translate}}
+                                    </label>
+                                    <label class="radio-inline">
+                                        <input type="radio"
+                                               ng-model="formData.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
+                                               value="false"/>
+                                        {{'label.input.false' | translate}}
+                                    </label>
+                                </div>
+                                <span data-ng-switch on="columnHeader.columnDisplayType">
                            <select ng-show="fieldType(columnHeader.columnDisplayType) == 'SELECT'"
-                              data-ng-switch-when="CODELOOKUP"
-                              ng-model="formData.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
-                              ng-options="columnValue.id as columnValue.value for columnValue in columnHeader.columnValues"
-                              value="{{columnValue.id}}" class="form-control">
+                                   data-ng-switch-when="CODELOOKUP"
+                                   ng-model="formData.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
+                                   ng-options="columnValue.id as columnValue.value for columnValue in columnHeader.columnValues"
+                                   value="{{columnValue.id}}" class="form-control">
                               <option value="">{{'label.selectone' | translate}}</option>
                            </select>
                            <select ng-show="fieldType(columnHeader.columnDisplayType) == 'SELECT'"
-                              data-ng-switch-when="CODEVALUE"
-                              ng-model="formData.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
-                              ng-options="columnValue.value as columnValue.value for columnValue in columnHeader.columnValues"
-                              value="{{columnValue.id}}" class="form-control">
+                                   data-ng-switch-when="CODEVALUE"
+                                   ng-model="formData.datatables[datatables.indexOf(datatable)].data[columnHeader.columnName]"
+                                   ng-options="columnValue.value as columnValue.value for columnValue in columnHeader.columnValues"
+                                   value="{{columnValue.id}}" class="form-control">
                               <option value="">{{'label.selectone' | translate}}</option>
                            </select>
                         </span>
-                     </div>
-                  </div>
-                  <div class="pull-right" ng-if="!$last">
-                     <button id="save4" class="btn btn-primary" wz-next>
-                        {{'label.button.proceed' | translate}}
-                     </button>
-                  </div>
-                  <div class="col-md-offset-5" ng-if="$last">
-                     <a id="cancel2" ng-href="{{cancel}}" class="btn btn-default">{{'label.button.cancel' |
-                        translate}}</a>
-                     <button id="save2" type="submit" class="btn btn-primary" ng-hide="blockUI"
-                        has-permission='CREATE_CLIENT'>{{'label.button.save' | translate}}</button>
-                     <button class="btn btn-info" ng-show="blockUI"><strong>{{'label.button.processing' |
-                           translate}}</strong></button>
-                  </div>
-               </fieldset>
-            </form>
-         </div>
-      </wz-step>
-   </wizard>
+                            </div>
+                        </div>
+                        <div class="pull-right" ng-if="!$last">
+                            <button id="save4" class="btn btn-primary" wz-next>
+                                {{'label.button.proceed' | translate}}
+                            </button>
+                        </div>
+                        <div class="col-md-offset-5" ng-if="$last">
+                            <a id="cancel2" ng-href="{{cancel}}" class="btn btn-default">{{'label.button.cancel' |
+                            translate}}</a>
+                            <button id="save2" type="submit" class="btn btn-primary" ng-hide="blockUI"
+                                    has-permission='CREATE_CLIENT'>{{'label.button.save' | translate}}
+                            </button>
+                            <button class="btn btn-info" ng-show="blockUI"><strong>{{'label.button.processing' |
+                            translate}}</strong></button>
+                        </div>
+                    </fieldset>
+                </form>
+            </div>
+        </wz-step>
+    </wizard>
 </div>
diff --git a/app/views/clients/editclient.html b/app/views/clients/editclient.html
index 67793df2d5..65d7563b67 100755
--- a/app/views/clients/editclient.html
+++ b/app/views/clients/editclient.html
@@ -60,6 +60,21 @@
 				</div>
 	        </div>
 
+			<div data-ng-switch on="showNonPersonOptions">
+				<div data-ng-switch-when="false">
+					<div class="form-group">
+						<label class="control-label col-sm-2">{{ 'label.input.othernames' | translate }}:</label>
+
+						<div class="col-sm-3">
+							<input id="othernames" type="text" ng-model="formData.othernames" class="form-control">
+						</div>
+						<label class="control-label col-sm-2" for="maidenname">{{ 'label.input.maidenname' | translate }}</label>
+						<div class="col-sm-3">
+							<input id="maidenname" type="text" ng-model="formData.maidenname" class="form-control">
+						</div>
+					</div>
+				</div>
+	        </div>
 			<div data-ng-switch on="showNonPersonOptions">
 				<div data-ng-switch-when="false">
 					<div class="form-group">
@@ -279,11 +294,420 @@
 
 	            </div>
 	        </div>
+
+			<div class="form-group">
+				<div class="form-group">
+					<div class="control-label col-sm-3">
+						<h3><strong>{{ 'label.heading.contact.information' | translate }}</strong>&nbsp</h3>
+					</div>
+				</div>
+				<div>
+					<div class="form-group">
+						<div class="control-label col-sm-2">
+							<label>{{ 'label.input.client.area' | translate }}<span
+									class="required">*</span></label>
+						</div>
+						<div class="col-sm-3">
+							<select id="clientArea"
+									ng-model="formData.clientArea" class="form-control" required="required"
+									ng-options="area.id as area.name for area in clientAreaOptions "
+									value="{{area.id}}"></select>
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="clientArea"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<div class="control-label col-sm-2">
+							<label>{{ 'label.input.client.housingtype' | translate }}<span
+									class="required">*</span></label>
+						</div>
+						<div class="col-sm-3">
+							<select id="housing"
+									ng-model="formData.housingTypeId" class="form-control" required="required"
+									ng-options="housing.id as housing.name for housing in housingTypeOptions "
+									value="{{housing.id}}"></select>
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="housing"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2">{{ 'label.input.residenceYears' | translate }}<span
+								class="required">*</span>
+						</label>
+						<div class="col-sm-3">
+							<input type="text" id="residenceYears" class="form-control" name="residenceYears"
+								   ng-model="formData.residenceYears" required late-validate number=true/>
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="residenceYears"></form-validate>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2">{{ 'label.input.communityYears' | translate }}<span
+								class="required">*</span>
+						</label>
+						<div class="col-sm-3">
+							<input type="text" id="communityYears" class="form-control" name="communityYears"
+								   ng-model="formData.communityYears" required late-validate number=true/>
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="residenceYears"></form-validate>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<div class="control-label col-sm-2">
+							<label>{{ 'label.input.client.publicservice' | translate }}<span
+									class="required">*</span></label>
+						</div>
+						<div class="col-sm-3">
+							<table>
+								<tr ng-repeat="publicServiceOption in publicServiceOptions">
+									<td>
+										<input id="{{publicServiceOption.id}}" type="checkbox" name='publicService' data-ng-model="publicServiceChecks[publicServiceOption.id]" data-ng-change="checkPublicService(publicServiceOption.id)">
+										&nbsp;&nbsp;<label>{{publicServiceOption.name}}</label>
+									</td>
+								</tr>
+							</table>
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="publicService"></form-validate>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<div class="control-label col-sm-2">
+							<label>{{ 'label.input.client.department' | translate }}<span
+									class="required">*</span></label>
+						</div>
+						<div class="col-sm-3">
+							<select id="department"
+									ng-model="formData.departmentId" class="form-control" required="required"
+									ng-options="department.id as department.name for department in departamentoOptions "
+									value="{{department.id}}"></select>
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="department"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<div class="control-label col-sm-2">
+							<label>{{ 'label.input.client.municipal' | translate }}<span
+									class="required">*</span></label>
+						</div>
+						<div class="col-sm-3">
+							<select id="municipal"
+									ng-model="formData.municipalId" class="form-control" required="required"
+									ng-options="municipal.id as municipal.name for municipal in municipioOptions "
+									value="{{municipal.id}}"></select>
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="municipal"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="village">{{ 'label.input.village' | translate }}</label>
+						<div class="col-sm-3">
+							<input type="text" id="village" name="village" ng-model="formData.village"
+								   class="form-control">
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="village"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="reference">{{ 'label.input.referencedata' | translate }}</label>
+						<div class="col-sm-3">
+							<input type="text" id="reference" name="reference"
+								   ng-model="formData.referenceData"
+								   class="form-control">
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="reference"/>
+						</div>
+					</div>
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="reference">{{ 'label.input.street' | translate }}</label>
+						<div class="col-sm-3">
+							<input type="text" id="street" name="street" ng-model="formData.street"
+								   class="form-control">
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="street"/>
+						</div>
+					</div>
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="reference">{{ 'label.input.avenue' | translate }}</label>
+						<div class="col-sm-3">
+							<input type="text" id="avenue" name="avenue" ng-model="formData.avenue"
+								   class="form-control">
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="avenue"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="reference">{{ 'label.input.streetNumber' | translate }}</label>
+						<div class="col-sm-3">
+							<input type="text" id="streetNumber" name="street" ng-model="formData.streetNumber"
+								   class="form-control">
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="streetNumber"/>
+						</div>
+					</div>
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="reference">{{ 'label.input.colony' | translate }}</label>
+						<div class="col-sm-3">
+							<input type="text" id="colony" name="colony" ng-model="formData.colony"
+								   class="form-control">
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="colony"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="reference">{{ 'label.input.sector' | translate }}</label>
+						<div class="col-sm-3">
+							<input type="text" id="sector" name="sector" ng-model="formData.sector"
+								   class="form-control">
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="sector"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="reference">{{ 'label.input.batch' | translate }}</label>
+						<div class="col-sm-3">
+							<input type="text" id="batch" name="batch" ng-model="formData.batch"
+								   class="form-control">
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="batch"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="reference">{{ 'label.input.square' | translate }}</label>
+						<div class="col-sm-3">
+							<input type="text" id="square" name="square" ng-model="formData.square"
+								   class="form-control">
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="square"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="reference">{{ 'label.input.zone' | translate }}</label>
+						<div class="col-sm-3">
+							<input type="text" id="zone" name="zone" ng-model="formData.zone"
+								   class="form-control">
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="zone"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="reference">{{ 'label.input.lightDeviceNumber' | translate }}</label>
+						<div class="col-sm-3">
+							<input type="text" id="lightDeviceNumber" name="lightDeviceNumber"
+								   ng-model="formData.lightDeviceNumber"
+								   class="form-control">
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="lightDeviceNumber"></form-validate>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2" for="mobileNo">{{'label.input.mobilenumber' |
+							translate}}<span class="required">*</span></label>
+						<div class="col-sm-3">
+							<input type="text" id="mobileNo" name="mobileNo" ng-model="formData.mobileNo" required="required" class="form-control"/>
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="mobileNo"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2" for="homeNumber">{{'label.input.homeNumber' |
+							translate}}</label>
+						<div class="col-sm-3">
+							<input type="text" id="homeNumber" name="homeNumber" ng-model="formData.homeNumber" class="form-control"/>
+						</div>
+						<div class="col-sm-2">
+							<form-validate valattributeform="createclientform" valattribute="homeNumber"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2" for="externalId">{{'label.input.loanCycle' |
+						translate}}</label>
+						<div class="col-sm-3">
+							<input type="text" id="loanCycle" name="loanCycle" ng-model="formData.loanCycle" required late-validate
+								   class="form-control"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="groupmem">{{'label.input.groupno' |
+						translate}}</label>
+						<div class="col-sm-3">
+							<input type="text" id="groupno" name="groupno"
+								   ng-model="formData.groupNumber"
+								   class="form-control"/>
+						</div>
+
+						<label class="control-label col-sm-2"
+							   for="groupmem">{{'label.input.groupmember' |
+						translate}}</label>
+						<div class="col-sm-3">
+							<input type="text" id="groupmem" name="groupme"
+								   ng-model="formData.groupMember"
+								   class="form-control"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="groupmem">{{'label.input.statusingroup' |
+						translate}}</label>
+						<div class="col-sm-3">
+							<input type="text" id="groupstatus" name="groupstatus"
+								   ng-model="formData.statusInGroup"
+								   class="form-control"/>
+						</div>
+
+						<label class="control-label col-sm-2"
+							   for="groupmem">{{'label.input.retirementreason' |
+						translate}}</label>
+						<div class="col-sm-3">
+							<input type="text" id="retReason" name="retReason"
+								   ng-model="formData.retirementReason"
+								   class="form-control"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="civilstatus">{{'label.input.civilstatus' |
+						translate}}</label>
+						<div class="col-sm-3">
+							<input type="text" id="civilstatus" name="civilstatus"
+								   ng-model="formData.civilStatus"
+								   class="form-control"/>
+						</div>
+
+						<label class="control-label col-sm-2"
+							   for="education">{{'label.input.education' |
+						translate}}</label>
+						<div class="col-sm-3">
+							<input type="text" id="education" name="education"
+								   ng-model="formData.educationLevel"
+								   class="form-control"/>
+						</div>
+					</div>
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="ethinicity">{{'label.input.ethinicity' |
+						translate}}</label>
+						<div class="col-sm-3">
+							<input type="text" id="ethinicity" name="ethinicity"
+								   ng-model="formData.ethinicity"
+								   class="form-control"/>
+						</div>
+
+						<label class="control-label col-sm-2"
+							   for="nationality">{{'label.input.nationality' |
+						translate}}</label>
+						<div class="col-sm-3">
+							<input type="text" id="nationality" name="nationality"
+								   ng-model="formData.nationality"
+								   class="form-control"/>
+						</div>
+					</div>
+
+					<div class="form-group">
+						<label class="control-label col-sm-2"
+							   for="languages">{{'label.input.languages' |
+						translate}}</label>
+						<div class="col-sm-3">
+                                <textarea type="text" rows="3" id="languages" name="languages"
+										  ng-model="formData.languages"
+										  class="form-control"></textarea>
+						</div>
+
+						<label class="control-label col-sm-2"
+							   for="econSector">{{'label.input.economicsector' |
+						translate}}</label>
+						<div class="col-sm-3" ng-if="economicSectorOptions">
+							<select chosen="sector" id="econSector" ng-model="formData.economicSector" class="form-control"
+									ng-options="sector.id as sector.name for sector in economicSectorOptions" ng-change="updateActivities()"
+									value="{{sector.id}}">
+								<option value="">--{{'label.input.economicsector' | translate}}--</option>
+							</select>
+						</div>
+					</div>
+
+					<div class="form-group" ng-if="formData.economicSector && economicActivityOptions">
+						<label class="control-label col-sm-2"
+							   for="languages">{{'label.input.economicactivity' |
+						translate}}</label>
+						<div class="col-sm-3" ng-if="formData.economicSector && economicActivityOptions">
+							<select chosen="economicActivity" id="" ng-model="formData.economicActivity" class="form-control"
+									ng-options="activity.id as activity.name for activity in economicActivityOptions"
+									value="{{activity.id}}">
+								<option value="">--{{'label.input.economicactivity' | translate}}--</option>
+							</select>
+						</div>
+
+						<label class="control-label col-sm-2"
+							   for="familyReference">{{'label.input.familyreference' |
+						translate}}</label>
+						<div class="col-sm-3">
+                                <input type="text" rows="3" id="familyReference" name="familyReference"
+										  ng-model="formData.familyReference"
+										  class="form-control"/>
+						</div>
+					</div>
+
+
+				</div>
+
+			</div>
+
+
 	        <div class="col-md-offset-3">
 	            <a id="cancel" href="#/viewclient/{{clientId}}">
 	                <button type="reset" class="btn btn-default">{{'label.button.cancel' | translate}}</button>
 	            </a>
-	            <button id="save" type="submit" class="btn btn-primary" has-permission='UPDATE_CLIENT'>{{'label.button.save' | translate}}</button>
+	            <button id="saveedit" type="submit" class="btn btn-primary" has-permission='UPDATE_CLIENT' ng-click="submit()" >{{'label.button.save' | translate}}</button>
 	        </div>
 	
 	    </fieldset>
diff --git a/app/views/clients/viewclient.html b/app/views/clients/viewclient.html
index 588ea1e740..dd684677ae 100755
--- a/app/views/clients/viewclient.html
+++ b/app/views/clients/viewclient.html
@@ -250,6 +250,9 @@ <h3 class="client-title">
 										<li class="{{button.icon}}">
 											<a href="#/selfservice/createuser/{{client.id}}">{{'label.createselfserviceuser' | translate}}</a>
 										</li>
+										<li class="{{button.icon}}">
+											<a href="#/loans/restructurecredit/{{client.id}}">{{'label.heading.creditrestructure' | translate}}</a>
+										</li>
 									</ul>
 								</span>
 						</div>
@@ -362,6 +365,9 @@ <h3>{{'label.heading.withdrawn' | translate}}</h3>
 												<a uib-tooltip="{{'label.button.makerepayment' | translate}}" ng-href="#/loanaccount/{{loanaccount.id}}/repayment" class="btn btn-xs btn-primary ng-binding">
 													<i class="fa fa-dollar"></i>
 												</a>
+												<a uib-tooltip="{{'label.button.futurepayment' | translate}}" ng-href="#/loanfuturepayment/{{loanaccount.id}}" class="btn btn-xs btn-primary ng-binding">
+													<i class="fa fa-question-circle"></i>
+												</a>
 											</td>
 											<td class="pointer center" ng-if="loanaccount.status.pendingApproval">
 												<a uib-tooltip="{{'label.button.approve' | translate}}" has-permission='APPROVE_LOAN' ng-href="#/loanaccount/{{loanaccount.id}}/approve" class="btn btn-xs btn-primary ng-binding">
@@ -1147,6 +1153,92 @@ <h4><strong>{{client.displayName}}</strong></h4>
 					</div>
 				</uib-tab>
 
+				<!--Contact information-->
+				<uib-tab ng-show="clientContactInformation" heading="{{'label.heading.contact.information' | translate}}" >
+					<div ng-show="clientContactInformation">
+						<div class="row" style="margin-right: auto; margin-left: auto">
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.client.area'| translate}}<span class="pull-right">{{clientContactInformation.area}}</span></span>
+							</div>
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.client.housingtype'| translate}}<span class="pull-right">{{clientContactInformation.housingType}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.residenceYears'| translate}}<span class="pull-right">{{clientContactInformation.yearsOfResidence}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.communityYears'| translate}}<span class="pull-right">{{clientContactInformation.communityYears}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.client.publicservice'| translate}}<span class="pull-right"><span ng-repeat="publicServiceType in clientContactInformation.publicServiceTypes track by $index">{{publicServiceType.name}}, </span></span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.client.department'| translate}}<span class="pull-right">{{clientContactInformation.department}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.client.municipal'| translate}}<span class="pull-right">{{clientContactInformation.municipality}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.village'| translate}}<span class="pull-right">{{clientContactInformation.village}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.referencedata'| translate}}<span class="pull-right">{{clientContactInformation.referenceHousingData}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.street'| translate}}<span class="pull-right">{{clientContactInformation.street}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.avenue'| translate}}<span class="pull-right">{{clientContactInformation.avenue}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.streetNumber'| translate}}<span class="pull-right">{{clientContactInformation.streetNumber}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.houseNumber'| translate}}<span class="pull-right">{{clientContactInformation.homePhone}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.colony'| translate}}<span class="pull-right">{{clientContactInformation.colony}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.sector'| translate}}<span class="pull-right">{{clientContactInformation.sector}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.batch'| translate}}<span class="pull-right">{{clientContactInformation.batch}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.square'| translate}}<span class="pull-right">{{clientContactInformation.square}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.zone'| translate}}<span class="pull-right">{{clientContactInformation.zone}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.lightDeviceNumber'| translate}}<span class="pull-right">{{clientContactInformation.lightMeterNumber}}</span></span>
+							</div>
+
+							<div class="col-md-5 m-1  alert alert-info">
+								<span>{{'label.input.homeNumber'| translate}}<span class="pull-right">{{clientContactInformation.homePhone}}</span></span>
+							</div>
+						</div>
+					</div>
+				</uib-tab>
+
 
 				<!--end of family tab-->
 
@@ -1207,8 +1299,11 @@ <h4><strong>{{client.displayName}}</strong></h4>
 						<thead>
 						<tr class="graybg">
 							<th>{{'label.heading.name' | translate}}</th>
-							<th>{{'label.heading.description' | translate}}</th>
+							<th>{{'label.input.observations' | translate}}</th>
 							<th>{{'label.heading.filename' | translate}}</th>
+							<th>{{'label.input.documenttype' | translate}}</th>
+							<th>{{'label.input.document.purpose' | translate}}</th>
+							<th>{{'label.input.date' | translate}}</th>
 							<th>{{'label.heading.actions' | translate}}</th>
 						</tr>
 						</thead>
@@ -1217,6 +1312,10 @@ <h4><strong>{{client.displayName}}</strong></h4>
 						  <td>{{clientdocument.name}}</td>
 							<td>{{clientdocument.description}}</td>
 							<td>{{clientdocument.fileName}}</td>
+							<td>{{clientdocument.documentType?clientdocument.documentType:'---'}}</td>
+							<td>{{clientdocument.documentPurpose?clientdocument.documentPurpose:'---'}}</td>
+							<td ng-if="clientdocument.dateCreated">{{clientdocument.dateCreated |DateFormat}}</td>
+							<td ng-if="!clientdocument.dateCreated">---</td>
 							<td>
 								<a target="_blank" href="{{hostUrl}}{{clientdocument.docUrl}}"><i class="fa fa-cloud-download"></i></a>&nbsp;
 								<a ng-show="clientdocument.fileIsImage" ng-click="previewDocument(clientdocument.docUrl,clientdocument.fileName)"><i class="fa fa-eye"></i></a>
diff --git a/app/views/groups/viewgroup.html b/app/views/groups/viewgroup.html
index 98eab07f16..e243f9a36a 100644
--- a/app/views/groups/viewgroup.html
+++ b/app/views/groups/viewgroup.html
@@ -46,7 +46,7 @@ <h4 class="">
 						<div class="">
 					    <div class="btn-group pull-right"
 					    	data-ng-hide="group.status.value == 'Closed'">
-					        <a href="#/editgroup/{{group.id}}?managecode=2"
+							<a href="#/editgroup/{{group.id}}?managecode=2"
 					        	class="btn btn-primary" has-permission='UPDATE_GROUP'
 					          	data-ng-hide="group.status.value=='Active'"><i class="fa fa-check"></i>
 					          	{{'label.button.activate' | translate }}
@@ -102,6 +102,9 @@ <h4 class="">
 		                              {{ 'label.button.unassignstaff' | translate }}
 		                              </a>
 		                          </li>
+								  <li>
+									    <a href="#/prequalification/11/viewdetails?showValidatePolicies=true" has-permission='READ_GROUP'>{{'label.button.hardpolicychecklist' | translate }}</a>
+								  </li>
 								  <li class="{{button.icon}}">
 									  <a href="#/groups/cupo/{{group.id}}">{{'label.cupo' | translate}}</a>
 								  </li>
diff --git a/app/views/hardpolicychecklist/viewhardpolicychecklist.html b/app/views/hardpolicychecklist/viewhardpolicychecklist.html
new file mode 100644
index 0000000000..56f1eb5d98
--- /dev/null
+++ b/app/views/hardpolicychecklist/viewhardpolicychecklist.html
@@ -0,0 +1,75 @@
+<div class="content-container" ng-controller="ViewHardPolicyChecklistController">
+    <ul class="breadcrumb">
+        <li><a href="#/viewgroup/{{groupId}}">{{'label.anchor.viewgroup' | translate}}</a></li>
+        <li class="active">{{ 'label.heading.hardpolicychecklist' | translate}}</li>
+    </ul>
+    <div class="card">
+        <div class="content">
+            <br>
+            <div class="row">
+                <div class="col-sm-5">
+                    <form ng-submit="search()" class="form-horizontal">
+                        <div class="form-group">
+                            <div class="col-md-10">
+                                <div class="input-group">
+                                    <input data-ng-model="searchText" type="text" placeholder="{{'label.input.searchByNameExternalId' | translate}}" class="form-control"/>
+                                    <br>
+                                    <span class="input-group-btn">
+                                        <button class="btn btn-primary form-control">
+                                            <span class="fa fa-search"></span>
+                                        </button>
+                                    </span>
+                                </div>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+                <div class="col-sm-5" data-ng-show="!showChecklistTable">
+                    <a href="#/createhardpolicychecklist/{{groupId}}" class="btn btn-primary pull-right" has-permission='UPDATE_GROUP'><i class="fa fa-plus "></i>{{'label.button.createhardpolicychecklist' | translate}}</a>
+                </div>
+                <div class="col-sm-5" data-ng-show="showChecklistTable">
+                    <a href="#/edithardpolicychecklist{{checklistId}}" class="btn btn-primary pull-right" has-permission='UPDATE_GROUP'><i class="fa fa-edit "></i>{{'label.button.edithardpolicychecklist' | translate}}</a>
+                </div>
+            </div>
+            <div class="toolbar"><h4>{{ 'label.heading.clientshardpolicychecklist' | translate}}</h4></div>
+            <div data-ng-show="showChecklistTable" scroll>
+                <table style="width: 1200px;white-space:nowrap" class="table table-bordered" data-anchor>
+                    <thead>
+                    <tr class="graybg">
+                        <th>{{'label.heading.clientname' | translate}}</th>
+                        <th> {{'label.heading.clientno' | translate}}</th>
+                        <th> {{'label.heading.newclientcategorization' | translate}}</th>
+                        <th>{{'label.heading.recurringcustomercategorization' | translate}}</th>
+                        <th>{{'label.heading.mandatoryphotograph' | translate}}</th>
+                        <th>{{'label.heading.clientage' | translate}}</th>
+                        <th>{{'label.heading.noOfMembersAccordingToPolicy' | translate}}</th>
+                        <th>{{'label.heading.minAndMaxAmount' | translate}}</th>
+                        <th>{{'label.heading.disparityOfValues' | translate}}</th>
+                        <th>{{'label.heading.percentageOfMembersStartingBusiness' | translate}}</th>
+                        <th>{{'label.heading.percentageOfMembersWithTheirOwnHome' | translate}}</th>
+                        <th>{{'label.heading.chairmanOfTheBCBoardOfDirectors' | translate}}</th>
+                        <th>{{'label.heading.categoriesOfClientToAccept' | translate}}</th>
+                        <th>{{'label.heading.requestedAmount' | translate}}</th>
+                        <th>{{'label.heading.addEndorsement' | translate}}</th>
+                        <th>{{'label.heading.paymentsOutsideCurrentTerm' | translate}}</th>
+                    </tr>
+                    </thead>
+                    <tbody>
+                    <tr class="pointer-main" dir-paginate="group in groups | orderBy:'name':reverse  | filter:filterText | itemsPerPage: groupsPerPage" total-items="totalGroups" pagination-id="groups" ng-show="group.status.code != 'clientStatusType.closed' || showClosed">
+                        <td class="pointer" data-ng-click="routeTo(group.id)">{{group.name}}</td>
+                        <td class="pointer" data-ng-click="routeTo(group.id)">{{group.accountNo}}</td>
+                        <td class="pointer" data-ng-click="routeTo(group.id)">{{group.externalId}}</td>
+                        <td class="pointer" data-ng-click="routeTo(group.id)">
+                            <i class="fa fa-stop {{group.status.code | StatusLookup}}" uib-tooltip="{{group.status.value}}" uib-tooltip-placement="top">
+                            </i>
+                        </td>
+                        <td data-ng-click="routeTo(group.id)">{{group.officeName}}</td>
+                    </tr>
+                    </tbody>
+                </table>
+                <dir-pagination-controls boundary-links="true"  pagination-id="groups" template-url="bower_components/angular-utils-pagination/dirPagination.tpl.html" on-page-change="getResultsPage(newPageNumber)"></dir-pagination-controls>
+            </div>
+            </div>
+        </div>
+    </div>
+</div>
diff --git a/app/views/loans/loanaccountactions.html b/app/views/loans/loanaccountactions.html
index dc9432ffed..ec338a0cab 100644
--- a/app/views/loans/loanaccountactions.html
+++ b/app/views/loans/loanaccountactions.html
@@ -270,7 +270,7 @@
                 </div>
             </div>
             <div class="form-group" ng-show="paymentDatefield">
-                <label class="control-label col-sm-2" for="modelName">{{'label.input.paymentdate' | translate}}<span
+                <label class="control-label col-sm-2" for="{{modelName}}">{{'label.input.paymentdate' | translate}}<span
                         class="required">*</span></label>
 
                 <div class="col-sm-3">
diff --git a/app/views/loans/loanfuturepayment.html b/app/views/loans/loanfuturepayment.html
new file mode 100644
index 0000000000..2220291d92
--- /dev/null
+++ b/app/views/loans/loanfuturepayment.html
@@ -0,0 +1,95 @@
+<div class="col-md-12" ng-controller="LoanFuturePaymentController">
+    <ul class="breadcrumb">
+        <li><a href="#/viewloanaccount/{{accountId}}">{{'label.anchor.viewloanaccount' | translate}}</a></li>
+        <li class="active">{{'label.anchor.futurepayment' | translate}}</li>
+    </ul>
+    <form class="form-horizontal well" novalidate="" name="futurepaymentform" rc-submit="submit()">
+        <api-validate></api-validate>
+        <fieldset>
+            <legend>{{'label.heading.loan.futurepayments' | translate}}</legend>
+            <div class="form-group">
+                <label class="control-label col-sm-2">{{'label.input.paymentdate' | translate}}<span
+                        class="required">*</span></label>
+                <div class="col-sm-3">
+                    <input id="paymentDate" name="paymentDate" class="form-control" type="text" sort datepicker-pop="dd MMMM yyyy"
+                           ng-model="formData.paymentDate" max="restrictDate" is-open="opened"/>
+                </div>
+            </div>
+            <div class="form-group">
+                <label class="control-label col-sm-2">{{'label.input.paymenttype' | translate}}<span
+                        class="required">*</span></label>
+                <div class="radio-inline">
+                    <label>
+                        <input type="radio" ng-model="formData.paymentType" value="partial">{{'label.input.partialPayment'
+                    |translate}}
+                    </label>
+                </div>
+                <div class="radio-inline">
+                    <label>
+                        <input type="radio" ng-model="formData.paymentType" value="full">{{'label.input.fullPayment'
+                    |translate}}
+                    </label>
+                </div>
+            </div>
+            <div class="col-md-offset-3">
+                <button id="cancel" type="reset" class="btn btn-default" ng-click="cancel()">{{ 'label.button.cancel' | translate }}</button>
+                <button id="save" type="submit" class="btn btn-primary" ng-click="simulatePayment()">{{ 'label.button.process' | translate }}</button>
+            </div>
+            <br/>
+            <br/>
+            <div class="form-group">
+                <label class="control-label col-sm-2">{{'label.input.bank.agreements' | translate}}</label>
+            </div>
+            <!-- table with loan bank agreements payment details -->
+            <div class="col-md-3 col-md-offset-1">
+                <table class="table">
+                    <thead>
+                    <tr class="graybg">
+                        <th>{{'label.heading.futurepayment.bank' | translate}} : {{'label.heading.futurepayment.agreement' | translate}}</th>
+                    </tr>
+                    </thead>
+                    <tbody>
+                    <tr ng-repeat="loanBankAgreement in simulationPaymentData.loanBankAgreements">
+                        <td>{{loanBankAgreement}}</td>
+                    </tr>
+                    </tbody>
+                </table>
+            </div>
+            <br/>
+            <br/>
+            <div style="clear:both">
+
+            </div>
+            <div class="form-group" style="margin-top: 20px;">
+                <label class="control-label col-sm-2">{{'label.anchor.futurepayment.details' | translate}}</label>
+            </div>
+            <!-- table with loan future payment details -->
+            <div class="col-md-6 col-md-offset-1">
+                <table class="table">
+                    <thead>
+                        <tr class="graybg">
+                            <th>{{'label.heading.futurepayment.code' | translate}}</th>
+                            <th>{{'label.heading.futurepayment.principal' | translate}}</th>
+                            <th>{{'label.heading.futurepayment.interest' | translate}}</th>
+                            <th>{{'label.heading.futurepayment.lateinterest' | translate}}</th>
+                            <th>{{'label.heading.futurepayment.totalamount' | translate}}</th>
+                            <th>{{'label.heading.futurepayment.availableguarantee' | translate}}</th>
+                        </tr>
+                    </thead>
+                    <tbody>
+                        <tr>
+                            <td>{{simulationPaymentData.paymentCode}}</td>
+                            <td>{{simulationPaymentData.principalPortion | number}}</td>
+                            <td>{{simulationPaymentData.interestPortion | number}}</td>
+                            <td>{{simulationPaymentData.lateInterestPortion | number}}</td>
+                            <td>{{simulationPaymentData.totalAmount | number}}</td>
+                            <td>0</td>
+                        </tr>
+                    </tbody>
+                </table>
+            </div>
+            <br/>
+        </fieldset>
+        <br/>
+    </form>
+</div>
\ No newline at end of file
diff --git a/app/views/loans/restructurecredits.html b/app/views/loans/restructurecredits.html
new file mode 100755
index 0000000000..26870542e1
--- /dev/null
+++ b/app/views/loans/restructurecredits.html
@@ -0,0 +1,173 @@
+<div class="content-container" ng-controller="RestructureCreditsController">
+    <div class="card">
+        <div class="content">
+            <div class="toolbar">
+                <h4>{{'label.heading.creditrestructure' | translate}}</h4>
+            </div>
+            <br/>
+            <div ng-if="clientData">
+                <div class="alert alert-info">
+                    <span>{{'label.input.clientName' | translate}}<span
+                            class="pull-right">{{clientData.displayName}}</span></span>
+                </div>
+                <div class="alert alert-info">
+                    <span>{{'label.input.office' | translate}}<span class="pull-right">{{clientData.officeName}}</span></span>
+                </div>
+            </div>
+
+            <hr/>
+            <div ng-if="activeLoans && !requestData">
+                <div class="alert alert-default row m-1" ng-repeat="loan in activeLoans">
+                    <div class="col-md-9">
+                        <div class="h5">{{'label.heading.loanproduct' | translate}} <span
+                                class="pull-right">{{loan.loanProductName}}</span></div>
+                        <div class="h5">{{'label.heading.loanoutstanding' | translate}} <span
+                                class="pull-right">{{loan.currency.code}} {{loan.summary.totalOutstanding | number}}</span>
+                        </div>
+                        <div class="h5">{{'label.heading.disbursementdate' | translate}} -
+                            {{loan.timeline.actualDisbursementDate | DateFormat}} <span
+                                    class="pull-right">{{'label.account.maturity.date' | translate}} - {{loan.timeline.expectedMaturityDate | DateFormat}}</span>
+                        </div>
+                    </div>
+                    <div class="col-md-3">
+                        <input type="checkbox" ng-change="computeTotalBalance()"
+                               style="width: 20px; height: 20px; display: inline-block; vertical-align: middle; cursor: pointer;"
+                               class="pull-right" ng-model="activeLoans[$index].selected">
+                    </div>
+
+                </div>
+
+            </div>
+            <hr/>
+            <h4 class="text-danger" ng-if="!activeLoans || activeLoans.length<=0">{{'label.heading.noactiveloans' | translate}}</h4>
+
+            <form ng-if="activeLoans && activeLoans.length>0 && !requestData" class="form-horizontal"
+                  name="restructureform" novalidate=""
+                  rc-submit="submit()">
+                <api-validate></api-validate>
+
+                <fieldset>
+                    <div class="form-group">
+                        <label class="control-label col-sm-2 width20" style="text-align: left;">{{ 'label.input.product' | translate }}</label>
+                        <div class="col-sm-3 paddedbottom10 paddedtop">
+                            <select id="productId" ng-model="formData.productId" class="form-control"
+                                    ng-options="prod.id as prod.name for prod in loanProductData" required="required"
+                                    value="{{prod.id}}"></select>
+                        </div>
+                        <div class="col-sm-2">
+                            <form-validate valattributeform="restructureform" valattribute="productId"/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="control-label col-sm-2 width20" style="text-align: left;">{{ 'label.input.totalLoanAmount' | translate }}</label>
+                        <div class="col-sm-3 paddedbottom10 paddedtop">
+                            <input type="text" disabled id="outstanding" name="outstanding" ng-model="outstandingBalance"
+                                   class="form-control"
+                                   required="required" late-Validate/>
+                        </div>
+                        <div class="col-sm-2">
+                            <form-validate valattributeform="restructureform" valattribute="outstanding"/>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+
+                        <label class="control-label col-sm-2 width20" style="text-align: left;">{{ 'label.input.comments' | translate }}</label>
+                        <div class="col-sm-3 paddedbottom10 paddedtop">
+
+                            <textarea rows="3"  style="width: 402px; height: 76px;" class="form-control" ng-model="formData.comments" ></textarea>
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+
+                        <label class="control-label col-sm-2 width20" style="text-align: left;"> {{ 'label.heading.disbursementdate' | translate }}</label>
+                        <div class="col-sm-3 paddedbottom10 paddedtop">
+
+                            <input id="expectedDisbursementDate" sort type="text" name="expecteddisbursementon" datepicker-pop="dd MMMM yyyy" ng-model="formData.disbursementDate"
+                                   is-open="opened1" min="minDate"  class="form-control" required />
+                        </div>
+
+                        <div class="col-sm-2">
+                            <form-validate valattributeform="restructureform" valattribute="expectedDisbursementDate"/>
+                        </div>
+                    </div>
+
+                </fieldset>
+
+
+            </form>
+            <div class="text-center" ng-if="!requestData">
+                <button class="btn btn-warning" ng-click="cancel()">{{'label.button.cancel' | translate}}</button>
+                <button class="btn btn-success" ng-click="submit()" ng-disabled="!activeLoans || activeLoans.length<=0">{{'label.button.submit' | translate}}</button>
+            </div>
+
+            <div ng-if="requestData">
+                <h4>{{'loanStatusType.submitted.and.pending.approval' | translate}}</h4>
+
+                <div class="alert alert-info">
+                    <span>{{'label.input.product' | translate}}<span
+                            class="pull-right">{{requestData.productName}}</span></span>
+                </div>
+                <div class="alert alert-info">
+                    <span>{{'label.input.totalLoanAmount' | translate}}<span
+                            class="pull-right fa-bold">{{requestData.totalLoanAmount}}</span></span>
+                </div>
+                <div class="alert alert-info">
+                    <span>{{'label.input.status' | translate}}<span
+                            class="pull-right">{{requestData.status.code |translate}}</span></span>
+                </div>
+                <div class="alert alert-info">
+                    <span>{{'label.input.addedBy' | translate}}<span
+                            class="pull-right">{{requestData.requestedByUser}}</span></span>
+                </div>
+                <div class="alert alert-info">
+                    <span>{{'label.heading.disbursementdate' | translate}}<span
+                            class="pull-right">{{resolveDateTime(requestData.newDisbursementDate)}}</span></span>
+                </div>
+
+                <div class="alert alert-info">
+                    <span>{{'label.createdon' | translate}}<span
+                            class="pull-right">{{resolveDateTime(requestData.dateRequested)}}</span></span>
+                </div>
+                <table class="table table-striped">
+                    <tr>
+                        <th>{{'label.input.product'|translate}}</th>
+                        <th>{{'label.input.totalLoanAmount'|translate}}</th>
+                        <th>{{'label.heading.disbursementdate'|translate}}</th>
+                        <th>{{'label.account.maturity.date'|translate}}</th>
+                    </tr>
+                    <tr ng-repeat="loan in requestData.loanMappingData">
+                        <td>{{loan.loanProduct}}</td>
+                        <td>{{loan.outstandingBalance}}</td>
+                        <td>{{loan.disbursementDate|DateFormat}}</td>
+                        <td>{{loan.maturityDate|DateFormat}}</td>
+                    </tr>
+                </table>
+
+                <div class="text-center">
+                    <button class="btn btn-warning" ng-click="cancel()">{{'label.button.cancel' | translate}}</button>
+                    <button class="btn btn-success" ng-click="processRequest('approve')">{{'label.button.approve' | translate}}</button>
+                    <button class="btn btn-danger" ng-click="processRequest('reject')">{{'label.button.reject' | translate}}</button>
+                </div>
+            </div>
+
+        </div>
+    </div>
+
+    <script type="text/ng-template" id="processRequest.html">
+        <div class="modal-header silver">
+            <h3 class="bolder">{{'label.heading.confirm' | translate}}</h3>
+        </div>
+        <div class="modal-body">
+            <api-validate></api-validate>
+            <div>{{'are.you.sure'|translate}} {{action}}</div>
+            <br>
+            <button class="btn btn-warning" ng-click="cancel()">{{'label.button.cancel' 	| translate}}</button>
+            <button class="btn btn-primary" ng-click="processRequest()">	{{'label.button.confirm' | translate}}</button>
+        </div>
+    </script>
+</div>
+
+
diff --git a/app/views/prequalifications/editgroup.html b/app/views/prequalifications/editgroup.html
new file mode 100644
index 0000000000..4f5c2b44ff
--- /dev/null
+++ b/app/views/prequalifications/editgroup.html
@@ -0,0 +1,183 @@
+<div ng-controller="EditGroupPrequalificatoinController">
+    <div>
+        <ul class="breadcrumb">
+            <li><a href="#/prequalificationGroups/new">{{'label.anchor.prequalifications' | translate}}</a></li>
+            <li class="active">{{'label.heading.editgroup.prequalification' | translate}}</li>
+        </ul>
+    </div>
+    <api-validate></api-validate>
+    <form name="groupDetailsForm" novalidate="" class="well form-inline" ng-submit="updatePreQualification()">
+        <fieldset>
+            <legend>{{ 'label.heading.editgroup.prequalification' | translate }}</legend>
+            <table class="width100">
+                <tr>
+                    <td class="width14">
+                        <label>{{ 'label.input.agency' | translate }}<span class="required">*</span>:&nbsp;</label>
+                    </td>
+                    <td class="width36 paddedbottom10">
+                        <select id="agency" ng-model="formData.agencyId"
+                                ng-options="agency.id as agency.name for agency in agenciesList" value="{{agency.id}}"
+                                class="form-control width170px" required late-validate>
+<!--                            <option style="display:none" value="">{{'label.input.agency' | translate}}</option>-->
+                        </select>
+                        <form-validate valattributeform="groupDetailsForm" valattribute="productId"/>
+                    </td>
+
+                    <td class="width14">
+                        <label>{{ 'label.input.select.center' | translate }}<span
+                                class="required">*</span>:&nbsp;</label>
+                    </td>
+                    <td class="width36 paddedbottom10">
+                        <select id="centerId" ng-model="formData.centerId"
+                                ng-options="pcenter.id as pcenter.name for pcenter in centersList"
+                                value="{{pcenter.id}}"
+                                class="form-control width170px" required="true" late-Validate>
+                            <!--                            <option style="display:none" value="">{{'label.input.select.center' | translate}}</option>-->
+                        </select>
+                        <form-validate valattributeform="groupDetailsForm" valattribute="centerId"/>
+                    </td>
+
+                </tr>
+                <tr ng-if="centersList && centersList.length>0">
+                    <td class="width14">
+                        <label>{{ 'label.input.groupname' | translate }}<span class="required">*</span>:&nbsp;</label>
+                    </td>
+                    <td class="width36 paddedbottom10">
+                        <input type="text" class="form-control" name="grpnm" ng-model="formData.groupName" id="grpnm" required>
+                        <form-validate valattributeform="groupDetailsForm" valattribute="groupId"/>
+                    </td>
+                    <td class="width14">
+                        <label>{{ 'label.input.prequalification.number' | translate }}<span
+                                class="required">*</span>:&nbsp;</label>
+                    </td>
+                    <td class="width36 paddedbottom10">
+                        <div class="alert alert-info">
+                            <span>{{'label.input.prequalification.number'|translate}}: <span class="pull-right">{{formData.prequalificationNumber}}</span></span>
+                        </div>
+                    </td>
+                </tr>
+                <tr ng-if="productsList && productsList.length>0">
+                    <td class="width14">
+                        <label>{{ 'label.input.selectproduct' | translate }}<span
+                                class="required">*</span>:&nbsp;</label>
+                    </td>
+                    <td class="width36 paddedbottom10">
+                        <select id="product" ng-model="formData.productId"
+                                ng-options="product.id as product.name for product in productsList"
+                                value="{{product.id}}" required late-validate
+                                class="form-control width170px">
+<!--                            <option style="display:none" value="">{{'label.input.selectproduct' | translate}}</option>-->
+                        </select>
+                        <form-validate valattributeform="groupDetailsForm" valattribute="product"/>
+                    </td>
+                </tr>
+                <tr ng-if="facilitators && facilitators.length>0">
+                    <td class="width14">
+                        <label>{{ 'label.input.facilitator' | translate }}<span
+                                class="required">*</span>:&nbsp;</label>
+                    </td>
+                    <td class="width36 paddedbottom10">
+                        <select id="facilitator" ng-model="formData.facilitator"
+                                ng-options="facilitator.id as facilitator.firstname + ' ' + facilitator.lastname + ' (' + facilitator.username + ')' for facilitator in facilitators"
+                                value="{{facilitator.id}}" required late-validate
+                                class="form-control width170px">
+<!--                            <option style="display:none" value="">{{'label.input.selectproduct' | translate}}</option>-->
+                        </select>
+                        <form-validate valattributeform="groupDetailsForm" valattribute="facilitator"/>
+                    </td>
+                </tr>
+
+            </table>
+
+            <hr/>
+            <table class="width100" style="table-layout: fixed"
+                   ng-if="formData.members && formData.members.length>0">
+                <tr>
+                    <th>{{'label.input.name'|translate}}</th>
+                    <th>{{'label.input.dpi'|translate}}</th>
+                    <th>{{'label.input.dateofbirth'|translate}}</th>
+                    <th>{{'label.input.amount.requested'|translate}}</th>
+                    <th>{{'label.input.work.with.puente' | translate}}</th>
+                    <th></th>
+                </tr>
+
+                <tr ng-repeat="member in formData.members">
+                    <td>{{member.name}}</td>
+                    <td>{{member.dpi}}</td>
+                    <td>{{member.dob | DateFormat}}</td>
+                    <td>{{member.requestedAmount| number}}</td>
+                    <td>{{member.workWithPuente}}</td>
+                    <td><a ng-click="removeMember($index)" uib-tooltip="{{'label.remove.row' | translate}}"><i class="fa fa-times"></i></a></td>
+                </tr>
+            </table>
+
+            <hr/>
+            <div class="text-center">
+                <a id="cancel" ng-href="#/prequalificationsmenu" class="btn btn-default">{{'label.button.cancel' |
+                translate}}</a>
+                <button id="submit" type="submit" class="btn btn-primary" ng-disabled="formData.members.length<=0 || (!formData.group && !formData.groupName)?true:false"
+                        has-permission='UPDATE_PREQUALIFICATIONS'>{{'label.button.edit' | translate}}</button>
+            </div>
+        </fieldset>
+    </form>
+    <hr/>
+
+    <legend>{{ 'label.heading.add.groupmembers' | translate }}</legend>
+    
+    <ui-validate></ui-validate>
+
+    <form name="memberDetailsForm" novalidate="" rc-submit="addMemberData()">
+
+        <table class="width100" style="table-layout: fixed">
+            <tr>
+                <th>{{'label.input.name'|translate}}</th>
+                <th>{{'label.input.dpi'|translate}}</th>
+                <th>{{'label.input.dateofbirth'|translate}}</th>
+                <th>{{'label.input.amount.requested'|translate}}</th>
+                <th>{{'label.input.work.with.puente' | translate}}</th>
+            </tr>
+            <tr>
+                <td>
+                    <input type="text" class="form-control" name="name"
+                           placeholder="{{'label.heading.clientname'|translate}}"
+                           ng-model="membersForm.name" id="clientname" required>
+                    <form-validate valattributeform="memberDetailsForm" valattribute="name"/>
+                </td>
+                <td>
+                    <input type="text" class="form-control" name="dpi"
+                           placeholder="{{'label.input.dpi' | translate}}" ng-model="membersForm.dpi"
+                           id="dpi" required>
+                    <form-validate valattributeform="memberDetailsForm" valattribute="dpi"/>
+                </td>
+                <td>
+                    <input id="dob" type="text" name="dob" datepicker-pop="dd MMMM yyyy"
+                           ng-model="membersForm.dob" is-open="opened1" min="minDate" max="restrictDate"
+                           class="form-control" required/>
+                    <form-validate valattributeform="memberDetailsForm" valattribute="dob"/>
+                </td>
+
+                <td>
+                    <input type="text" class="form-control" name="amount"
+                           placeholder="{{'label.input.amount.requested' |translate}}"
+                           ng-model="membersForm.requestedAmount" id="amount" required>
+                    <form-validate valattributeform="memberDetailsForm" valattribute="amount"/>
+                </td>
+
+                <td>
+                    <select id="puente" ng-model="membersForm.workWithPuente"
+                            ng-options="item.value as item.name for item in yesNo" value="{{group.value}}"
+                            class="form-control" required="required" required>
+                        <option style="display:none" value="">{{'label.input.work.with.puente' | translate}}</option>
+                    </select>
+                    <form-validate valattributeform="memberDetailsForm" valattribute="puente"/>
+                </td>
+
+                <td class="text-center">
+                    <button id="save" class="btn btn-primary" type="submit"><i class="fa fa-plus" has-permission='CREATE_PREQUALIFICATIONS'> {{'label.button.add' | translate}}</i>
+                    </button>
+                </td>
+            </tr>
+        </table>
+    </form>
+
+</div>
diff --git a/app/views/prequalifications/existingGroupPrequalification-backup.html b/app/views/prequalifications/existingGroupPrequalification-backup.html
new file mode 100644
index 0000000000..60d7794fea
--- /dev/null
+++ b/app/views/prequalifications/existingGroupPrequalification-backup.html
@@ -0,0 +1,147 @@
+<div ng-controller="NewGroupPrequalificatoinController">
+    <div>
+        <ul class="breadcrumb">
+            <li><a href="#/prequalificationsmenu">{{'label.anchor.prequalifications' | translate}}</a></li>
+            <li class="active">{{'label.heading.newgroup.prequalification' | translate}}</li>
+        </ul>
+    </div>
+    <api-validate></api-validate>
+    <form name="groupDetailsForm" novalidate="" class="well form-inline" ng-submit="prequalifyGroup()">
+        <fieldset>
+            <legend>{{ 'label.heading.newgroup.prequalification' | translate }}</legend>
+            <table class="width100">
+                <tr>
+                    <td class="width14">
+                        <label>{{ 'label.input.agency' | translate }}<span class="required">*</span>:&nbsp;</label>
+                    </td>
+                    <td class="width36 paddedbottom10">
+                        <select id="agency" ng-model="formData.agencyId"
+                                ng-options="agency.id as agency.name for agency in agenciesList" value="{{agency.id}}"
+                                class="form-control width170px" required late-validate>
+                            <!--                            <option style="display:none" value="">{{'label.input.agency' | translate}}</option>-->
+                        </select>
+                        <form-validate valattributeform="groupDetailsForm" valattribute="productId"/>
+                    </td>
+
+                    <td class="width14">
+                        <label>{{ 'label.input.select.center' | translate }}<span
+                                class="required">*</span>:&nbsp;</label>
+                    </td>
+                    <td class="width36 paddedbottom10">
+                        <select id="centerId" ng-model="formData.centerId"
+                                ng-options="pcenter.id as pcenter.name for pcenter in centersList"
+                                value="{{pcenter.id}}" ng-change="getGroupsByCenterId(formData.centerId)"
+                                class="form-control width170px" required="true" late-Validate>
+                            <!--                            <option style="display:none" value="">{{'label.input.select.center' | translate}}</option>-->
+                        </select>
+                        <form-validate valattributeform="groupDetailsForm" valattribute="centerId"/>
+                    </td>
+
+                </tr>
+
+                <tr ng-if="productsList && productsList.length>0">
+                    <td class="width14">
+                        <label>{{ 'label.input.selectproduct' | translate }}<span
+                                class="required">*</span>:&nbsp;</label>
+                    </td>
+                    <td class="width36 paddedbottom10">
+                        <select id="product" ng-model="formData.productId"
+                                ng-options="product.id as product.name for product in productsList"
+                                value="{{product.id}}" required late-validate
+                                class="form-control width170px">
+                            <!--                            <option style="display:none" value="">{{'label.input.selectproduct' | translate}}</option>-->
+                        </select>
+                        <form-validate valattributeform="groupDetailsForm" valattribute="product"/>
+                    </td>
+
+                    <td class="width14">
+                        <label>{{ 'label.input.facilitator' | translate }}<span
+                                class="required">*</span>:&nbsp;</label>
+                    </td>
+                    <td class="width36 paddedbottom10">
+                        <select id="facilitator" ng-model="formData.facilitator"
+                                ng-options="responsibleUser.id as responsibleUser.firstname + ' ' + responsibleUser.lastname + ' (' + responsibleUser.username + ')' for responsibleUser in facilitators"
+                                value="{{facilitator.id}}" required late-validate
+                                class="form-control width170px">
+                            <!--                            <option style="display:none" value="">{{'label.input.selectproduct' | translate}}</option>-->
+                        </select>
+                        <form-validate valattributeform="groupDetailsForm" valattribute="facilitator"/>
+                    </td>
+                </tr>
+
+                <tr ng-if="groupsList && groupsList.length>0">
+                    <td class="width14">
+                        <label>{{ 'label.input.group' | translate }}<span class="required">*</span>:&nbsp;</label>
+                    </td>
+                    <td class="width36 paddedbottom10">
+                        <select id="groupId" ng-model="formData.groupId"
+                                ng-options="group.id as group.name for group in groupsList"
+                                value="{{group.id}}" ng-change="getGroupMembers(formData.groupId)"
+                                class="form-control width170px" required="true" late-Validate>
+                            <!--                            <option style="display:none" value="">{{'label.input.select.center' | translate}}</option>-->
+                        </select>
+                        <form-validate valattributeform="groupDetailsForm" valattribute="groupId"/>
+                    </td>
+                </tr>
+
+            </table>
+
+            <hr/>
+            <div ng-if="groupData">
+
+                <h4>{{'label.heading.groupdetails' | translate}}</h4>
+                <table class="table table-bordered table-striped">
+                    <tr>
+                        <th>{{'label.input.prequalification.number' | translate}}</th>
+                        <td>{{generatePrequalificationNumber()}}</td>
+                    </tr>
+                    <tr>
+                        <th>{{'label.input.date' | translate}}</th>
+                        <td>{{groupData.createdDate|DateFormat}}</td>
+                    </tr>
+                    <tr>
+                        <th>{{'label.input.office' | translate}}</th>
+                        <td>{{groupData.officeName}}</td>
+                    </tr>
+                    <tr ng-if="groupData.meetingStartTime">
+                        <th>{{'label.heading.meetingtimes' | translate}}</th>
+                        <td>FROM: {{resolveTime(groupData.meetingStartTime)}} - TO: {{resolveTime(groupData.meetingEndTime)}}</td>
+                    </tr>
+                </table>
+                <hr/>
+                <table class="width100" style="table-layout: fixed"
+                       ng-if="membersList && membersList.length>0">
+                    <tr>
+                        <th>{{'label.input.name' | translate}}</th>
+                        <th>{{'label.input.dpi' | translate}}</th>
+                        <th>{{'label.input.accountnumber' | translate}}</th>
+                        <th>{{'label.input.dateofbirth' | translate}}</th>
+                        <th>{{'label.input.amount.requested' | translate}}</th>
+                    </tr>
+
+                    <tr ng-repeat="member in membersList">
+                        <td>{{member.displayName}}</td>
+                        <td>{{member.dpiNumber}}</td>
+                        <td>{{member.accountNo}}</td>
+                        <td>{{member.dateOfBirth | DateFormat}}</td>
+                        <td> <input type="text" class="form-control" name="requestedAmount"
+                                    placeholder="{{'label.input.amount.requested'|translate}}"
+                                    data-ng-model="membersList[$index].requestedAmount" id="requestedAmount{{$index}}" required>
+                            <form-validate valattributeform="groupDetailsForm" valattribute="requestedAmount{{$index}}"/>
+                        </td>
+                    </tr>
+                </table>
+            </div>
+
+            <hr/>
+            <div class="text-center">
+                <a id="cancel" ng-href="#/prequalificationsmenu" class="btn btn-default">{{'label.button.cancel' |
+                translate}}</a>
+                <button id="submit" type="submit" class="btn btn-primary"
+                        ng-disabled="membersList.length<=0 || !formData.groupId?true:false"
+                        has-permission='CREATE_PREQUALIFICATIONS'>{{'label.button.save' | translate}}
+                </button>
+            </div>
+        </fieldset>
+    </form>
+</div>
diff --git a/app/views/prequalifications/existingGroupPrequalification.html b/app/views/prequalifications/existingGroupPrequalification.html
index 60d7794fea..fb5aea9153 100644
--- a/app/views/prequalifications/existingGroupPrequalification.html
+++ b/app/views/prequalifications/existingGroupPrequalification.html
@@ -1,147 +1,76 @@
-<div ng-controller="NewGroupPrequalificatoinController">
+<div class="content-container" ng-controller="PrequalificationsController">
     <div>
         <ul class="breadcrumb">
             <li><a href="#/prequalificationsmenu">{{'label.anchor.prequalifications' | translate}}</a></li>
-            <li class="active">{{'label.heading.newgroup.prequalification' | translate}}</li>
+            <li class="active">{{'label.heading.existinggroup.prequalification' | translate}}</li>
         </ul>
     </div>
-    <api-validate></api-validate>
-    <form name="groupDetailsForm" novalidate="" class="well form-inline" ng-submit="prequalifyGroup()">
-        <fieldset>
-            <legend>{{ 'label.heading.newgroup.prequalification' | translate }}</legend>
-            <table class="width100">
-                <tr>
-                    <td class="width14">
-                        <label>{{ 'label.input.agency' | translate }}<span class="required">*</span>:&nbsp;</label>
-                    </td>
-                    <td class="width36 paddedbottom10">
-                        <select id="agency" ng-model="formData.agencyId"
-                                ng-options="agency.id as agency.name for agency in agenciesList" value="{{agency.id}}"
-                                class="form-control width170px" required late-validate>
-                            <!--                            <option style="display:none" value="">{{'label.input.agency' | translate}}</option>-->
-                        </select>
-                        <form-validate valattributeform="groupDetailsForm" valattribute="productId"/>
-                    </td>
+    <div class="card">
+        <api-validate></api-validate>
+        <div class="content">
+            <div class="row">
 
-                    <td class="width14">
-                        <label>{{ 'label.input.select.center' | translate }}<span
-                                class="required">*</span>:&nbsp;</label>
-                    </td>
-                    <td class="width36 paddedbottom10">
-                        <select id="centerId" ng-model="formData.centerId"
-                                ng-options="pcenter.id as pcenter.name for pcenter in centersList"
-                                value="{{pcenter.id}}" ng-change="getGroupsByCenterId(formData.centerId)"
-                                class="form-control width170px" required="true" late-Validate>
-                            <!--                            <option style="display:none" value="">{{'label.input.select.center' | translate}}</option>-->
-                        </select>
-                        <form-validate valattributeform="groupDetailsForm" valattribute="centerId"/>
-                    </td>
-
-                </tr>
-
-                <tr ng-if="productsList && productsList.length>0">
-                    <td class="width14">
-                        <label>{{ 'label.input.selectproduct' | translate }}<span
-                                class="required">*</span>:&nbsp;</label>
-                    </td>
-                    <td class="width36 paddedbottom10">
-                        <select id="product" ng-model="formData.productId"
-                                ng-options="product.id as product.name for product in productsList"
-                                value="{{product.id}}" required late-validate
-                                class="form-control width170px">
-                            <!--                            <option style="display:none" value="">{{'label.input.selectproduct' | translate}}</option>-->
-                        </select>
-                        <form-validate valattributeform="groupDetailsForm" valattribute="product"/>
-                    </td>
-
-                    <td class="width14">
-                        <label>{{ 'label.input.facilitator' | translate }}<span
-                                class="required">*</span>:&nbsp;</label>
-                    </td>
-                    <td class="width36 paddedbottom10">
-                        <select id="facilitator" ng-model="formData.facilitator"
-                                ng-options="responsibleUser.id as responsibleUser.firstname + ' ' + responsibleUser.lastname + ' (' + responsibleUser.username + ')' for responsibleUser in facilitators"
-                                value="{{facilitator.id}}" required late-validate
-                                class="form-control width170px">
-                            <!--                            <option style="display:none" value="">{{'label.input.selectproduct' | translate}}</option>-->
-                        </select>
-                        <form-validate valattributeform="groupDetailsForm" valattribute="facilitator"/>
-                    </td>
-                </tr>
-
-                <tr ng-if="groupsList && groupsList.length>0">
-                    <td class="width14">
-                        <label>{{ 'label.input.group' | translate }}<span class="required">*</span>:&nbsp;</label>
-                    </td>
-                    <td class="width36 paddedbottom10">
-                        <select id="groupId" ng-model="formData.groupId"
-                                ng-options="group.id as group.name for group in groupsList"
-                                value="{{group.id}}" ng-change="getGroupMembers(formData.groupId)"
-                                class="form-control width170px" required="true" late-Validate>
-                            <!--                            <option style="display:none" value="">{{'label.input.select.center' | translate}}</option>-->
-                        </select>
-                        <form-validate valattributeform="groupDetailsForm" valattribute="groupId"/>
-                    </td>
-                </tr>
-
-            </table>
-
-            <hr/>
-            <div ng-if="groupData">
-
-                <h4>{{'label.heading.groupdetails' | translate}}</h4>
-                <table class="table table-bordered table-striped">
-                    <tr>
-                        <th>{{'label.input.prequalification.number' | translate}}</th>
-                        <td>{{generatePrequalificationNumber()}}</td>
-                    </tr>
-                    <tr>
-                        <th>{{'label.input.date' | translate}}</th>
-                        <td>{{groupData.createdDate|DateFormat}}</td>
-                    </tr>
-                    <tr>
-                        <th>{{'label.input.office' | translate}}</th>
-                        <td>{{groupData.officeName}}</td>
-                    </tr>
-                    <tr ng-if="groupData.meetingStartTime">
-                        <th>{{'label.heading.meetingtimes' | translate}}</th>
-                        <td>FROM: {{resolveTime(groupData.meetingStartTime)}} - TO: {{resolveTime(groupData.meetingEndTime)}}</td>
-                    </tr>
-                </table>
+                <div class="col-sm-6">
+                    <form ng-submit="getResultsPage(1)" class="form-horizontal">
+                        <div class="form-group">
+                            <div class="col-md-8">
+                                <div class="input-group">
+                                    <input data-ng-model="searchText" type="text"
+                                           placeholder="{{'label.input.searchByGroupOrGroupNameOrCenter' | translate}}"
+                                           class="form-control unstyled"/>
+                                    <span class="input-group-btn">
+                                    <button class="btn btn-primary form-control" ng-disabled="!searchText">
+                                        <span class="fa fa-search"></span>
+                                    </button>
+                                    </span>
+                                </div>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+                <!--             <div class="col-sm-12">
+                                <a href="#/prequalifications/individual/create" class="btn btn-primary pull-right"
+                                has-permission='CREATE_PREQUALIFICATIONS'><i
+                                        class="fa fa-plus"></i> {{'label.heading.newgroup.prequalification' | translate}}</a> &nbsp;&nbsp;
+                            </div> -->
                 <hr/>
-                <table class="width100" style="table-layout: fixed"
-                       ng-if="membersList && membersList.length>0">
+                <table class="table">
+                    <thead>
                     <tr>
-                        <th>{{'label.input.name' | translate}}</th>
-                        <th>{{'label.input.dpi' | translate}}</th>
-                        <th>{{'label.input.accountnumber' | translate}}</th>
-                        <th>{{'label.input.dateofbirth' | translate}}</th>
-                        <th>{{'label.input.amount.requested' | translate}}</th>
+                        <th>{{'label.heading.prequalificationnumber' | translate}}</th>
+                        <th>{{'label.input.agency' | translate}}</th>
+                        <th>{{'label.input.group' | translate}}</th>
+                        <th>{{'label.input.center' | translate}}</th>
+                        <!--                    <th>{{'label.input.portfolio' | translate}}</th>-->
+                        <th>{{'label.input.product' | translate}}</th>
+                        <th>{{'label.input.addedBy' | translate}}</th>
+                        <th>{{'label.heading.action' | translate}}</th>
                     </tr>
+                    </thead>
 
-                    <tr ng-repeat="member in membersList">
-                        <td>{{member.displayName}}</td>
-                        <td>{{member.dpiNumber}}</td>
-                        <td>{{member.accountNo}}</td>
-                        <td>{{member.dateOfBirth | DateFormat}}</td>
-                        <td> <input type="text" class="form-control" name="requestedAmount"
-                                    placeholder="{{'label.input.amount.requested'|translate}}"
-                                    data-ng-model="membersList[$index].requestedAmount" id="requestedAmount{{$index}}" required>
-                            <form-validate valattributeform="groupDetailsForm" valattribute="requestedAmount{{$index}}"/>
+                    <tbody>
+                    <tr dir-paginate="group in groupsList | itemsPerPage: groupsPerPage" class="pointer-main"
+                        total-items="totalGroups"  pagination-id="blacklist">
+                        <td class="pointer" data-ng-click="routeTo('#/prequalification/' + group.id + '/viewdetails')">{{group.prequalificationNumber}}</td>
+                        <td class="pointer">{{group.agencyName}}</td>
+                        <td class="pointer">{{group.groupName}}</td>
+                        <td class="pointer">{{group.centerName}}</small></td>
+                        <!--                    <td class="pointer">{{client.portforlioName}}</td>-->
+                        <td class="pointer">{{group.productName}}</td>
+                        <td class="pointer">{{group.addedBy}}</td>
+                        <td class="pointer">
+                            <a href="#/prequalification/{{group.id}}/viewdetails" has-permission='VIEW_PREQUALIFICATIONS'>
+                                <i class="fa fa-search fa fa-2x" title="View Prequalifications"></i></a>
                         </td>
                     </tr>
-                </table>
-            </div>
+                    </tbody>
 
-            <hr/>
-            <div class="text-center">
-                <a id="cancel" ng-href="#/prequalificationsmenu" class="btn btn-default">{{'label.button.cancel' |
-                translate}}</a>
-                <button id="submit" type="submit" class="btn btn-primary"
-                        ng-disabled="membersList.length<=0 || !formData.groupId?true:false"
-                        has-permission='CREATE_PREQUALIFICATIONS'>{{'label.button.save' | translate}}
-                </button>
+                </table>
+                <dir-pagination-controls align="center" boundary-links="true"
+                                         template-url="bower_components/angular-utils-pagination/dirPagination.tpl.html"
+                                         on-page-change="getResultsPage(newPageNumber)" pagination-id="blacklist">
+                </dir-pagination-controls>
             </div>
-        </fieldset>
-    </form>
+        </div>
+    </div>
 </div>
diff --git a/app/views/prequalifications/newgroup.html b/app/views/prequalifications/newgroup.html
index 858f9c47cf..ddae33f4ba 100644
--- a/app/views/prequalifications/newgroup.html
+++ b/app/views/prequalifications/newgroup.html
@@ -90,6 +90,7 @@
                     <th>{{'label.input.dateofbirth'|translate}}</th>
                     <th>{{'label.input.work.with.puente' | translate}}</th>
                     <th>{{'label.input.amount.requested'|translate}}</th>
+                    <th></th>
                 </tr>
 
                 <tr ng-repeat="member in formData.members">
@@ -98,6 +99,7 @@
                     <td>{{member.dob}}</td>
                     <td>{{member.puente}}</td>
                     <td>{{member.amount}}</td>
+                    <td><a ng-click="removeMember($index)" uib-tooltip="{{'label.remove.row' | translate}}"><i class="fa fa-times"></i></a></td>
                 </tr>
             </table>
 
@@ -114,6 +116,8 @@
 
     <legend>{{ 'label.heading.add.groupmembers' | translate }}</legend>
 
+    <ui-validate></ui-validate>
+
     <form name="memberDetailsForm" novalidate="" rc-submit="addMemberData()">
 
         <table class="width100" style="table-layout: fixed">
@@ -154,7 +158,7 @@
                 </td>
 
                 <td class="text-center">
-                    <button id="save" class="btn btn-primary" type="submit"><i class="fa fa-plus"> Add</i>
+                    <button id="save" class="btn btn-primary" type="submit"><i class="fa fa-plus" has-permission='CREATE_PREQUALIFICATIONS'> {{'label.button.add' | translate}}</i>
                     </button>
                 </td>
             </tr>
diff --git a/app/views/prequalifications/prequalificationDetails.html b/app/views/prequalifications/prequalificationDetails.html
index 1c9ef566cf..8698c71190 100644
--- a/app/views/prequalifications/prequalificationDetails.html
+++ b/app/views/prequalifications/prequalificationDetails.html
@@ -4,7 +4,10 @@
 
         <div class="content">
             <div class="toolbar">
-                <h3>{{'label.anchor.prequalifications' | translate }}</h3>
+                <ul class="breadcrumb">
+                    <li><a href="#/prequalificationGroups/new">{{'label.anchor.prequalifications' | translate}}</a></li>
+                    <li class="active">{{'label.anchor.prequalification.details' | translate}}</li>
+                </ul>
             </div>
             <hr/>
             <div class="row">
@@ -32,6 +35,12 @@ <h3>{{'label.anchor.prequalifications' | translate }}</h3>
                     <div class="alert alert-info">
                         <span>{{'label.input.addedBy'|translate}}: <span class="pull-right">{{groupData.addedBy}}</span></span>
                     </div>
+                    <div class="alert alert-info">
+                        <span>{{'label.input.status'|translate}}: <span class="pull-right fa fa-stop {{groupData.status.code | StatusLookup}}"
+                                                                        uib-tooltip-placement="right" uib-tooltip="{{groupData.status.value}}">
+                            {{groupData.status.value}} </span>
+                        </span>
+                    </div>
                     <div class="alert alert-default" ng-if="groupData.comments">
                         <span>{{'label.input.comments'|translate}}: <span class="pull-right">{{groupData.comments}}</span></span>
                     </div>
@@ -39,6 +48,9 @@ <h3>{{'label.anchor.prequalifications' | translate }}</h3>
 
             </div>
             <hr/>
+            <div class="toolbar" data-ng-show="showValidatePolicies">
+                <h4>{{'label.heading.prequalification.validation.result' | translate}} </h4><i class="fa fa-circle fa-2x {{policyCheckColor(groupData.redValidationCount)}}">{{groupData.redValidationCount}}</i>
+            </div>
             <h5 ng-if="groupMembers && groupMembers.length>0">{{'label.heading.members' | translate }}</h5>
             <table class="width100" style="table-layout: fixed"
                    ng-if="groupMembers && groupMembers.length>0">
@@ -49,6 +61,7 @@ <h5 ng-if="groupMembers && groupMembers.length>0">{{'label.heading.members' | tr
                     <th>{{'label.input.work.with.puente' | translate}}</th>
                     <th>{{'label.input.amount.requested'|translate}}</th>
                     <th>{{'label.input.status' |translate}}</th>
+                    <th data-ng-show="showValidatePolicies" >{{'label.heading.hard.policy.status' |translate}}</th>
                     <th ng-if="groupData.groupId">{{'label.input.totalLoanAmount' |translate}}</th>
                     <th ng-if="groupData.groupId">{{'label.input.totalLoanBalance' |translate}}</th>
                     <th ng-if="groupData.groupId">{{'label.input.totalGuaranteedLoanBalance' |translate}}</th>
@@ -62,18 +75,24 @@ <h5 ng-if="groupMembers && groupMembers.length>0">{{'label.heading.members' | tr
                     <td>{{member.dpi}}</td>
                     <td>{{member.dob|DateFormat}}</td>
                     <td>{{member.workWithPuente}}</td>
-                    <td>{{member.requestedAmount}}</td>
+                    <td>{{member.requestedAmount | number}}</td>
                     <td><i class="fa fa-circle fa-2x {{resolveMemberStatus(member.status.value)}}">{{member.blacklistCount}}</i></td>
-                    <td ng-if="groupData.groupId">{{member.totalLoanAmount}}</td>
-                    <td ng-if="groupData.groupId">{{member.totalLoanBalance}}</td>
-                    <td ng-if="groupData.groupId">{{member.totalGuaranteedLoanBalance}}</td>
+                    <td data-ng-show="showValidatePolicies"><i class="fa fa-circle fa-2x {{policyCheckColor(member.redValidationCount)}}">{{member.redValidationCount}}</i></td>
+                    <td ng-if="groupData.groupId">{{member.totalLoanAmount | number}}</td>
+                    <td ng-if="groupData.groupId">{{member.totalLoanBalance | number}}</td>
+                    <td ng-if="groupData.groupId">{{member.totalGuaranteedLoanBalance | number}}</td>
                     <td ng-if="groupData.groupId">{{member.noOfCycles}}</td>
                     <td ng-if="groupData.groupId">{{member.additionalCreditsCount}}</td>
-                    <td ng-if="groupData.groupId">{{member.additionalCreditsSum}}</td>
+                    <td ng-if="groupData.groupId">{{member.additionalCreditsSum | number}}</td>
 
                 </tr>
             </table>
-
+            <hr/>
+            <div>
+                <button data-ng-show="showValidatePolicies" id="validate" class="btn btn-success" ng-click="validateHardPolicy()" type="button" value="validate"
+                        has-permission='VALIDATEHARDPOLICIES_PREQUALIFICATION_CHECKLIST'>{{'label.button.validate' | translate}}
+                </button>
+            </div>
             <hr/>
             <table class="table" ng-if="prequalificationDocuments.length > 0">
                 <thead>
@@ -98,7 +117,8 @@ <h5 ng-if="groupMembers && groupMembers.length>0">{{'label.heading.members' | tr
                 </tbody>
             </table>
 
-            <form name="prequalForm" novalidate="" class="card form-horizontal well" rc-submit="submit()" ng-if="prequalificationDocuments.length<=0">
+
+            <form name="prequalForm" novalidate="" class="card form-horizontal well" rc-submit="submit()" ng-if="prequalificationDocuments.length<=0" data-ng-show="showSupportDocumentUploadPage()">
                 <api-validate></api-validate>
                 <fieldset>
                     <div class="form-group">
diff --git a/app/views/prequalifications/prequalificationsGroups.html b/app/views/prequalifications/prequalificationsGroups.html
index 2f24d08a18..9e02a29fec 100644
--- a/app/views/prequalifications/prequalificationsGroups.html
+++ b/app/views/prequalifications/prequalificationsGroups.html
@@ -1,5 +1,6 @@
 <div class="content-container" ng-controller="PrequalificationsController">
     <ul class="breadcrumb">
+        <li><a href="#/prequalificationsmenu">{{'label.anchor.prequalifications' | translate}}</a></li>
         <li class="active">{{'label.anchor.prequalification.groups' | translate}}</li>
     </ul>
 
@@ -12,22 +13,22 @@ <h4 class="pull-left">{{'label.anchor.prequalification.groups'| translate}}</h4>
             <br>
             <div class="row">
                 <div class="col-sm-6">
-                    <!--                    <form ng-submit="getResultsPage(1)" class="form-horizontal">-->
-                    <!--                        <div class="form-group">-->
-                    <!--                            <div class="col-md-8">-->
-                    <!--                                <div class="input-group">-->
-                    <!--                                    <input data-ng-model="searchText" type="text"-->
-                    <!--                                           placeholder="{{'label.input.searchByNameDpi' | translate}}"-->
-                    <!--                                           class="form-control unstyled"/>-->
-                    <!--                                    <span class="input-group-btn">-->
-                    <!--                                        <button class="btn btn-primary form-control" ng-disabled="!searchText">-->
-                    <!--                                            <span class="fa fa-search"></span>-->
-                    <!--                                        </button>-->
-                    <!--                                    </span>-->
-                    <!--                                </div>-->
-                    <!--                            </div>-->
-                    <!--                        </div>-->
-                    <!--                    </form>-->
+                    <form ng-submit="getResultsPage(1)" class="form-horizontal">
+                        <div class="form-group">
+                            <div class="col-md-8">
+                                <div class="input-group">
+                                    <input data-ng-model="searchText" type="text"
+                                           placeholder="{{'label.input.searchByGroupOrGroupNameOrCenter' | translate}}"
+                                           class="form-control unstyled"/>
+                                    <span class="input-group-btn">
+                                    <button class="btn btn-primary form-control" ng-disabled="!searchText">
+                                        <span class="fa fa-search"></span>
+                                    </button>
+                                    </span>
+                                </div>
+                            </div>
+                        </div>
+                    </form>
                 </div>
 
                 <div class="col-sm-3">
@@ -35,7 +36,8 @@ <h4 class="pull-left">{{'label.anchor.prequalification.groups'| translate}}</h4>
                 </div>
 
                 <div class="col-sm-3">
-                    <a href="#/prequalifications/newprequalification/{{prequalificationType}}" class="btn btn-primary pull-right" has-permission='CREATE_PREQUALIFICATIONS'><i
+                    <!-- Only show New Pre-qualification button if type is not existing-->
+                    <a ng-if="prequalificationType !== 'existing'" href="#/prequalifications/newprequalification/{{prequalificationType}}" class="btn btn-primary pull-right" has-permission='CREATE_PREQUALIFICATIONS'><i
                             class="fa fa-plus"></i> {{'label.heading.newgroup.prequalification' | translate}}</a> &nbsp;&nbsp;
                 </div>
             </div>
@@ -67,6 +69,8 @@ <h4 class="pull-left">{{'label.anchor.prequalification.groups'| translate}}</h4>
                     <td class="pointer">
                         <a href="#/prequalification/{{client.id}}/viewdetails" has-permission='VIEW_PREQUALIFICATIONS'>
                             <i class="fa fa-search fa fa-2x" title="View Prequalifications"></i></a>
+                        <a href="#/prequalification/{{client.id}}/edit" has-permission='EDIT_PREQUALIFICATIONS'>
+                            <i class="fa fa-edit fa fa-2x" title="Edit Prequalifications"></i></a>
                     </td>
                 </tr>
                 </tbody>
diff --git a/app/views/prequalifications/prequalificationsMenu.html b/app/views/prequalifications/prequalificationsMenu.html
index 21f633e303..f648eaffa5 100644
--- a/app/views/prequalifications/prequalificationsMenu.html
+++ b/app/views/prequalifications/prequalificationsMenu.html
@@ -10,34 +10,34 @@ <h5>{{'label.anchor.prequalifications' | translate }}</h5>
                     <div class="list-group">
                         <a class="list-group-item" href="#/prequalificationGroups/new" has-permission='CREATE_PREQUALIFICATIONS'>
                             <h5 class="list-group-item-heading">
-                                <i class="fa fa-large fa fa-cogs"></i>&nbsp;&nbsp;{{'label.heading.newgroup.prequalification'
-                            | translate}}</h5>
-                        </a>
-                    </div>
-                    <div class="list-group">
-                        <a class="list-group-item" href="#/prequalificationGroups/existing" has-permission='VIEW_PREQUALIFICATIONS'>
-                            <h5 class="list-group-item-heading">
-                                <i class="fa fa-large fa fa-cogs"></i>&nbsp;&nbsp;{{'label.heading.existinggroup.prequalification'
-                            | translate}}</h5>
-                        </a>
-                    </div>
-                    <div class="list-group">
-                        <a class="list-group-item" href="#/prequalificationGroups/chanimcredit" has-permission='VIEW_PREQUALIFICATIONS'>
-                            <h5 class="list-group-item-heading">
-                                <i class="fa fa-large fa fa-cogs"></i>&nbsp;&nbsp;{{'label.heading.chanimcredit.prequalification'
+                                <i class="fa fa-large fa fa-cogs"></i>&nbsp;&nbsp;{{'label.heading.groupcredit.prequalification'
                             | translate}}</h5>
                         </a>
                     </div>
+                    <!--                     <div class="list-group">
+                                            <a class="list-group-item" href="#/prequalifications/newprequalification/existing" has-permission='VIEW_PREQUALIFICATIONS'>
+                                                <h5 class="list-group-item-heading">
+                                                    <i class="fa fa-large fa fa-cogs"></i>&nbsp;&nbsp;{{'label.heading.existinggroup.prequalification'
+                                                | translate}}</h5>
+                                            </a>
+                                        </div> -->
+                    <!--                     <div class="list-group">
+                                            <a class="list-group-item" href="#/prequalificationGroups/chanimcredit" has-permission='VIEW_PREQUALIFICATIONS'>
+                                                <h5 class="list-group-item-heading">
+                                                    <i class="fa fa-large fa fa-cogs"></i>&nbsp;&nbsp;{{'label.heading.chanimcredit.prequalification'
+                                                | translate}}</h5>
+                                            </a>
+                                        </div> -->
                 </div>
 
                 <div class="col-sm-6">
-                    <div class="list-group">
-                        <a class="list-group-item" href="#/prequalificationGroups/parallelcredit" has-permission='VIEW_PREQUALIFICATIONS'>
-                            <h5 class="list-group-item-heading">
-                                <i class="fa fa-large fa fa-cogs"></i>&nbsp;&nbsp;{{'label.heading.parallelcredit.prequalification'
-                            | translate}}</h5>
-                        </a>
-                    </div>
+                    <!--                     <div class="list-group">
+                                            <a class="list-group-item" href="#/prequalificationGroups/parallelcredit" has-permission='VIEW_PREQUALIFICATIONS'>
+                                                <h5 class="list-group-item-heading">
+                                                    <i class="fa fa-large fa fa-cogs"></i>&nbsp;&nbsp;{{'label.heading.parallelcredit.prequalification'
+                                                | translate}}</h5>
+                                            </a>
+                                        </div> -->
                     <div class="list-group">
                         <a class="list-group-item" href="#/prequalifications/individualprequalifications" has-permission='VIEW_PREQUALIFICATIONS'>
                             <h5 class="list-group-item-heading">
diff --git a/package-lock.json b/package-lock.json
index 8afc7cfbf0..b7feb20024 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -3125,6 +3125,12 @@
         }
       }
     },
+    "graceful-fs": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz",
+      "integrity": "sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q=",
+      "dev": true
+    },
     "graceful-readlink": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz",
@@ -3547,6 +3553,258 @@
         }
       }
     },
+    "grunt-devcode": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/grunt-devcode/-/grunt-devcode-0.0.4.tgz",
+      "integrity": "sha1-pTfB/efuEzGxjf3Ae/iPDFteOwc=",
+      "dev": true,
+      "requires": {
+        "grunt": "~0.4.0"
+      },
+      "dependencies": {
+        "argparse": {
+          "version": "0.1.16",
+          "resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
+          "integrity": "sha1-z9AeD7uj1srtBJ+9dY1A9lGW9Xw=",
+          "dev": true,
+          "requires": {
+            "underscore": "~1.7.0",
+            "underscore.string": "~2.4.0"
+          },
+          "dependencies": {
+            "underscore.string": {
+              "version": "2.4.0",
+              "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz",
+              "integrity": "sha1-jN2PusTi0uoefi6Al8QvRCKA+Fs=",
+              "dev": true
+            }
+          }
+        },
+        "async": {
+          "version": "0.1.22",
+          "resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz",
+          "integrity": "sha1-D8GqoIig4+8Ovi2IMbqw3PiEUGE=",
+          "dev": true
+        },
+        "dateformat": {
+          "version": "1.0.2-1.2.3",
+          "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-1.0.2-1.2.3.tgz",
+          "integrity": "sha1-sCIMAt6YYXQztyhRz0fePfLNvuk=",
+          "dev": true
+        },
+        "esprima": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz",
+          "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=",
+          "dev": true
+        },
+        "findup-sync": {
+          "version": "0.1.3",
+          "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.1.3.tgz",
+          "integrity": "sha1-fz56l7gjksZTvwZYm9hRkOk8NoM=",
+          "dev": true,
+          "requires": {
+            "glob": "~3.2.9",
+            "lodash": "~2.4.1"
+          },
+          "dependencies": {
+            "glob": {
+              "version": "3.2.11",
+              "resolved": "https://registry.npmjs.org/glob/-/glob-3.2.11.tgz",
+              "integrity": "sha1-Spc/Y1uRkPcV0QmH1cAP0oFevj0=",
+              "dev": true,
+              "requires": {
+                "inherits": "2",
+                "minimatch": "0.3"
+              }
+            },
+            "lodash": {
+              "version": "2.4.2",
+              "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+              "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+              "dev": true
+            },
+            "minimatch": {
+              "version": "0.3.0",
+              "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.3.0.tgz",
+              "integrity": "sha1-J12O2qxPG7MyZHIInnlJyDlGmd0=",
+              "dev": true,
+              "requires": {
+                "lru-cache": "2",
+                "sigmund": "~1.0.0"
+              }
+            }
+          }
+        },
+        "glob": {
+          "version": "3.1.21",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
+          "integrity": "sha1-0p4KBV3qUTj00H7UDomC6DwgZs0=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "~1.2.0",
+            "inherits": "1",
+            "minimatch": "~0.2.11"
+          },
+          "dependencies": {
+            "inherits": {
+              "version": "1.0.2",
+              "resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.2.tgz",
+              "integrity": "sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js=",
+              "dev": true
+            }
+          }
+        },
+        "grunt": {
+          "version": "0.4.5",
+          "resolved": "https://registry.npmjs.org/grunt/-/grunt-0.4.5.tgz",
+          "integrity": "sha1-VpN81RlDJK3/bSB2MYMqnWuk5/A=",
+          "dev": true,
+          "requires": {
+            "async": "~0.1.22",
+            "coffee-script": "~1.3.3",
+            "colors": "~0.6.2",
+            "dateformat": "1.0.2-1.2.3",
+            "eventemitter2": "~0.4.13",
+            "exit": "~0.1.1",
+            "findup-sync": "~0.1.2",
+            "getobject": "~0.1.0",
+            "glob": "~3.1.21",
+            "grunt-legacy-log": "~0.1.0",
+            "grunt-legacy-util": "~0.2.0",
+            "hooker": "~0.2.3",
+            "iconv-lite": "~0.2.11",
+            "js-yaml": "~2.0.5",
+            "lodash": "~0.9.2",
+            "minimatch": "~0.2.12",
+            "nopt": "~1.0.10",
+            "rimraf": "~2.2.8",
+            "underscore.string": "~2.2.1",
+            "which": "~1.0.5"
+          }
+        },
+        "grunt-legacy-log": {
+          "version": "0.1.3",
+          "resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.3.tgz",
+          "integrity": "sha1-7ClCboAwIa9ZAp+H0vnNczWgVTE=",
+          "dev": true,
+          "requires": {
+            "colors": "~0.6.2",
+            "grunt-legacy-log-utils": "~0.1.1",
+            "hooker": "~0.2.3",
+            "lodash": "~2.4.1",
+            "underscore.string": "~2.3.3"
+          },
+          "dependencies": {
+            "lodash": {
+              "version": "2.4.2",
+              "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+              "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+              "dev": true
+            },
+            "underscore.string": {
+              "version": "2.3.3",
+              "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
+              "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
+              "dev": true
+            }
+          }
+        },
+        "grunt-legacy-log-utils": {
+          "version": "0.1.1",
+          "resolved": "https://registry.npmjs.org/grunt-legacy-log-utils/-/grunt-legacy-log-utils-0.1.1.tgz",
+          "integrity": "sha1-wHBrndkGThFvNvI/5OawSGcsD34=",
+          "dev": true,
+          "requires": {
+            "colors": "~0.6.2",
+            "lodash": "~2.4.1",
+            "underscore.string": "~2.3.3"
+          },
+          "dependencies": {
+            "lodash": {
+              "version": "2.4.2",
+              "resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.2.tgz",
+              "integrity": "sha1-+t2DS5aDBz2hebPq5tnA0VBT9z4=",
+              "dev": true
+            },
+            "underscore.string": {
+              "version": "2.3.3",
+              "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz",
+              "integrity": "sha1-ccCL9rQosRM/N+ePo6Icgvcymw0=",
+              "dev": true
+            }
+          }
+        },
+        "grunt-legacy-util": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz",
+          "integrity": "sha1-kzJIhNv343qf98Am3/RR2UqeVUs=",
+          "dev": true,
+          "requires": {
+            "async": "~0.1.22",
+            "exit": "~0.1.1",
+            "getobject": "~0.1.0",
+            "hooker": "~0.2.3",
+            "lodash": "~0.9.2",
+            "underscore.string": "~2.2.1",
+            "which": "~1.0.5"
+          }
+        },
+        "iconv-lite": {
+          "version": "0.2.11",
+          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.2.11.tgz",
+          "integrity": "sha1-HOYKOleGSiktEyH/RgnKS7llrcg=",
+          "dev": true
+        },
+        "js-yaml": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-2.0.5.tgz",
+          "integrity": "sha1-olrmUJmZ6X3yeMZxnaEb0Gh3Q6g=",
+          "dev": true,
+          "requires": {
+            "argparse": "~ 0.1.11",
+            "esprima": "~ 1.0.2"
+          }
+        },
+        "lodash": {
+          "version": "0.9.2",
+          "resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz",
+          "integrity": "sha1-jzSZxSRdNG1oLlsNO0B2fgnxqSw=",
+          "dev": true
+        },
+        "minimatch": {
+          "version": "0.2.14",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
+          "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=",
+          "dev": true,
+          "requires": {
+            "lru-cache": "2",
+            "sigmund": "~1.0.0"
+          }
+        },
+        "nopt": {
+          "version": "1.0.10",
+          "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+          "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+          "dev": true,
+          "requires": {
+            "abbrev": "1"
+          }
+        },
+        "rimraf": {
+          "version": "2.2.8",
+          "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz",
+          "integrity": "sha1-5Dm+Kq7jJzIZUnMPmaiSnk/FBYI=",
+          "dev": true
+        },
+        "underscore.string": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz",
+          "integrity": "sha1-18D6KvXVoaZ/QlPa7pgTLnM/Dxk=",
+          "dev": true
+        }
+      }
+    },
     "grunt-gh-pages": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/grunt-gh-pages/-/grunt-gh-pages-4.0.0.tgz",
@@ -3841,16 +4099,6 @@
         }
       }
     },
-    "grunt-preprocess": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/grunt-preprocess/-/grunt-preprocess-5.1.0.tgz",
-      "integrity": "sha512-akQU6U8ULt8gLC6yeGFSBqWQUAqMQPFMm0jAIL4FVIIEkzp3unjDUxu/ZBpbJhiQ9i4IP1M1S6wsdMjE0QsrhQ==",
-      "dev": true,
-      "requires": {
-        "lodash": "^4.5.0",
-        "preprocess": "^3.0.2"
-      }
-    },
     "grunt-replace": {
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/grunt-replace/-/grunt-replace-1.0.1.tgz",
@@ -5667,6 +5915,12 @@
         "signal-exit": "^3.0.0"
       }
     },
+    "lru-cache": {
+      "version": "2.7.3",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz",
+      "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=",
+      "dev": true
+    },
     "make-dir": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
@@ -7009,15 +7263,6 @@
       "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
       "dev": true
     },
-    "preprocess": {
-      "version": "3.2.0",
-      "resolved": "https://registry.npmjs.org/preprocess/-/preprocess-3.2.0.tgz",
-      "integrity": "sha512-cO+Rf+Ose/eD+ze8Hxd9p9nS1xT8thYqv8owG/V8+IS/Remd7Z17SvaRK/oJxp08yaM8zb+QTckDKJUul2pk7g==",
-      "dev": true,
-      "requires": {
-        "xregexp": "3.1.0"
-      }
-    },
     "preserve": {
       "version": "0.2.0",
       "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz",
@@ -8012,6 +8257,12 @@
       "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=",
       "dev": true
     },
+    "sigmund": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz",
+      "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=",
+      "dev": true
+    },
     "signal-exit": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
@@ -9171,6 +9422,12 @@
       "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=",
       "dev": true
     },
+    "underscore": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz",
+      "integrity": "sha1-a7rwh3UA02vjTsqlhODbn+8DUgk=",
+      "dev": true
+    },
     "underscore.string": {
       "version": "3.3.5",
       "resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-3.3.5.tgz",
@@ -9596,12 +9853,6 @@
       "integrity": "sha1-GFqIjATspGw+QHDZn3tJ3jUomS0=",
       "dev": true
     },
-    "xregexp": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-3.1.0.tgz",
-      "integrity": "sha512-4Y1x6DyB8xRoxosooa6PlGWqmmSKatbzhrftZ7Purmm4B8R4qIEJG1A2hZsdz5DhmIqS0msC0I7KEq93GphEVg==",
-      "dev": true
-    },
     "xtend": {
       "version": "4.0.2",
       "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",