diff --git a/Pages/CustomerLoans.js b/Pages/CustomerLoans.js
index 3f23c2b..c329df9 100644
--- a/Pages/CustomerLoans.js
+++ b/Pages/CustomerLoans.js
@@ -260,11 +260,6 @@
         $$(".td-step-label").get(2).click();
         browser.sleep(1000);
     },
-    goToStepDocuments: function(){
-        browser.sleep(100);
-        browser.wait(EC.elementToBeClickable($$(".td-step-label").get(3)), 3000);
-        $$(".td-step-label").get(3).click();
-    },
     verifyButtonCreateMemberLoanDisabled: function(){
         expect(primaryButton.filter(function(elem, index) {
             return elem.$("span").getText().then(function(text) {
@@ -388,12 +383,22 @@
         browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 6000);
         $('a[href="' + link + '"]').click();
     },
+    goToTasksForCustomerLoan: function (customer, productIdentifier, accountIdentifier) {
+        link = "/customers/detail/" + customer + "/loans/products/" + productIdentifier + "/detail/" + accountIdentifier + "/tasks";
+        browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 5000);
+        $('a[href="' + link + '"]').click();
+    },
     viewDebtIncomeReportForCustomerLoan: function(customer, productIdentifier, accountIdentifier){
         link = "/customers/detail/" + customer + "/loans/products/" + productIdentifier + "/detail/" + accountIdentifier + "/debtIncome";
         browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 5000);
         $('a[href="' + link + '"]').click();
         browser.wait(EC.visibilityOf($("fims-layout-card-over")), 2000);
     },
+    viewLoanDocumentsForCustomerLoan: function(customer, loanProduct, loanAccount){
+        link = "/customers/detail/" + customer + "/loans/products/" + loanProduct + "/detail/" + loanAccount + "/documents";
+        browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 6000);
+        $('a[href="' + link + '"]').click();
+    },
     //table
     verifyPrincipalForLoanAccountInRow: function(principalAmount, row){
         browser.wait(EC.visibilityOf($("table tbody")), 3000);
@@ -477,7 +482,7 @@
         })).toBe(true);
     },
     verifyMemberRatioIs:function (text){
-        expect($$("mat-tab-header div[role='tab']").get(0).getText()).toMatch("Member(Ratio: " + text + ")");
+        expect($$("mat-tab-header div[role='tab']").get(0).getText()).toEqual("Member(Ratio: " + text + ")");
     },
     verifyCoSignerRatioIs:function (text){
         expect($$("mat-tab-header div[role='tab']").get(1).getText()).toEqual("Co-signer(Ratio: " + text + ")");
@@ -508,9 +513,50 @@
     verifyCreateLoanButtonIsNotDisplayed: function(){
         expect($("a[title='Create new loan for member ']").isPresent()).toBe(false);
     },
+    verifyEditLoanButtonIsNotDisplayed: function(){
+        expect($("a[title='Edit member loan']").isPresent()).toBe(false);
+    },
+    verifyEditLoanButtonIsDisplayed: function(){
+        expect($("a[title='Edit member loan']").isPresent()).toBe(true);
+    },
     verifyMessagesAreDisplayed: function(message, message2){
         browser.wait(EC.visibilityOf($("td-message")), 2500);
         expect($("td-message .td-message-label").getText()).toEqual(message);
         expect($("td-message .td-message-sublabel").getText()).toEqual(message2);
+    },
+    //planned payments
+    verifyDateForPlannedPaymentsInRow: function(date, row){
+        browser.wait(EC.visibilityOf($("table tbody")), 3000);
+        expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(0).getText()).toEqual(date);
+    },
+    verifyBalanceForPlannedPaymentsInRow: function(balance, row){
+        browser.wait(EC.visibilityOf($("table tbody tr")), 4000);
+        expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(4).getText()).toEqual(balance);
+    },
+    verifyPaymentForPlannedPaymentsInRow: function(payment, row){
+        browser.wait(EC.visibilityOf($("table tbody")), 3000);
+        expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(1).getText()).toEqual(payment);
+    },
+    verifyInterestForPlannedPaymentsInRow: function(interest, row){
+        browser.wait(EC.visibilityOf($("table tbody")), 3000);
+        expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(2).getText()).toEqual(interest);
+    },
+    verifyPrincipalForPlannedPaymentsInRow: function(principal, row){
+        browser.wait(EC.visibilityOf($("table tbody")), 3000);
+        expect($$("table tbody tr").get(row - 1).$$(".td-data-table-cell").get(3).getText()).toEqual(principal);
+    },
+    //tasks
+    selectExecuteTaskCheckbox: function(){
+        browser.wait(EC.visibilityOf($("mat-checkbox[title='Execute task']")), 3000);
+        $("mat-checkbox[title='Execute task']").click();
+        expect($("mat-checkbox[title='Execute task']").getAttribute("class")).toMatch("mat-checkbox-checked");
+    },
+    clickButtonForTask: function (action) {
+        browser.sleep(500);
+        $$('.mat-raised-button.mat-primary').filter(function (elem, index) {
+            return elem.$("span").getText().then(function (text) {
+                return text === action;
+            });
+        }).click();
     }
 };
diff --git a/Pages/Customers.js b/Pages/Customers.js
index 60135f6..5451cf6 100644
--- a/Pages/Customers.js
+++ b/Pages/Customers.js
@@ -313,11 +313,6 @@
         browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 5000);
         $('a[href="' + link + '"]').click();
     },
-    clickLinkTasks: function (customer, productIdentifier, accountIdentifier) {
-        link = "/customers/detail/" + customer + "/loans/products/" + productIdentifier + "/detail/" + accountIdentifier + "/tasks";
-        browser.wait(EC.elementToBeClickable($('a[href="' + link + '"]')), 5000);
-        $('a[href="' + link + '"]').click();
-    },
     selectExecuteTaskCheckbox: function(){
         browser.wait(EC.visibilityOf($("mat-checkbox[title='Execute task']")), 3000);
         $("mat-checkbox[title='Execute task']").click();
diff --git a/Pages/Loans.js b/Pages/Loans.js
index 46e41fd..61d7a26 100644
--- a/Pages/Loans.js
+++ b/Pages/Loans.js
@@ -36,6 +36,7 @@
 var arrearsAllowanceAccountInput = $("fims-account-select[formcontrolname='account'] input");
 
 var primaryButton = $$(".mat-raised-button.mat-primary");
+var buttons = $$(".mat-button");
 
 var feeAmountInput = $("fims-text-input[controlname='amount'] input");
 var feeProportionalToSelect = $("mat-select[formcontrolname='proportionalTo'] .mat-select-trigger");
@@ -50,6 +51,9 @@
 var actionSelect1 = $("mat-select[formcontrolname='action'] .mat-select-trigger");
 var actionSelect2 = $$("mat-select[formcontrolname='action'] .mat-select-trigger").get(1);
 
+var daysLateInputs = $$("fims-text-input[controlname='daysLate'] input");
+var percentProvisions = $$("fims-text-input[controlname='percentProvision'] input");
+
 module.exports = {
     goToLoanProductsViaSidePanel: function() {
         $("a[href='/loans']").click();
@@ -210,6 +214,15 @@
             });
         }).click();
     },
+    clickEnabledUpdateLossProvisionButton: function(){
+        browser.executeScript("arguments[0].scrollIntoView();", primaryButton.first().getWebElement());
+        browser.wait(EC.elementToBeClickable(primaryButton.first()), 3000);
+        primaryButton.filter(function(elem, index) {
+            return elem.$("span").getText().then(function(text) {
+                return text === "UPDATE LOSS PROVISION";
+            });
+        }).click();
+    },
     clickLinkManageFeesForLoanProduct: function(identifier){
         link = "/loans/detail/" + identifier + "/charges";
         browser.wait(EC.visibilityOf($('a[href="'+ link + '"]')));
@@ -225,6 +238,32 @@
         browser.wait(EC.visibilityOf($('a[href="'+ link + '"]')));
         $('a[href="'+ link + '"]').click();
     },
+    clickLinkLossProvisionConfigurationForLoanProduct: function(identifier){
+        link = "/loans/detail/" + identifier + "/lossProvision";
+        browser.wait(EC.visibilityOf($('a[href="'+ link + '"]')));
+        $('a[href="'+ link + '"]').click();
+    },
+    clickButtonAddStep: function(){
+        browser.sleep(200);
+        buttons.filter(function(elem, index) {
+            return elem.$("span").getText().then(function(text) {
+                return text === "ADD STEP";
+            });
+        }).first().click();
+    },
+    enterTextIntoDaysLateInputField: function(text, number) {
+        browser.wait(EC.visibilityOf(daysLateInputs.get(number-1)), 2000)
+        daysLateInputs.get(number-1).clear().click().sendKeys(text);
+    },
+    enterTextIntoPercentProvisionInputField: function(text, number) {
+        browser.wait(EC.visibilityOf(percentProvisions.get(number-1)), 2000)
+        percentProvisions.get(number-1).clear().click().sendKeys(text);
+    },
+    clickButtonEditLossProvisionConfigurationForLoanProduct: function(identifier){
+        link = "/loans/detail/" + identifier + "/lossProvision/edit" ;
+        browser.wait(EC.visibilityOf($('a[href="'+ link + '"]')));
+        $('a[href="'+ link + '"]').click();
+    },
     clickButtonCreateTaskForLoanProduct: function(identifier){
         link = "/loans/detail/" + identifier + "/tasks/create";
         browser.wait(EC.visibilityOf($('a[href="'+ link + '"]')));
diff --git a/Specs/gate1.js b/Specs/gate1.js
index 6195ace..02fc42a 100644
--- a/Specs/gate1.js
+++ b/Specs/gate1.js
@@ -487,7 +487,7 @@
     });
     it('should be able to open loan - mandatory task', function () {
         Common.clickLinkShowForRowWithId(loanAccountShortName);
-        Customers.clickLinkTasks(customerAccount, loanShortName, loanAccountShortName);
+        CustomerLoans.goToTasksForCustomerLoan(customerAccount, loanShortName, loanAccountShortName);
         Customers.selectExecuteTaskCheckbox();
         Common.verifyMessagePopupIsDisplayed("Task executed successfully");
         Customers.clickButtonForTask("OPEN");
@@ -497,7 +497,7 @@
         Common.verifyMessagePopupIsDisplayed("Case is going to be updated");
     });
     it('should be able to approve loan - mandatory task already executed', function () {
-        Customers.clickLinkTasks(customerAccount, loanShortName, loanAccountShortName);
+        CustomerLoans.goToTasksForCustomerLoan(customerAccount, loanShortName, loanAccountShortName);
         //checkbox already selected since one task only that already has been executed
         Customers.clickButtonForTask("APPROVE");
         Customers.clickButtonForTransaction("APPROVE");
@@ -507,7 +507,7 @@
     it('should be able to disburse loan - no task', function () {
         //currently error if this is done too quickly; workaround
         browser.sleep("10000");
-        Customers.clickLinkTasks(customerAccount, loanShortName, loanAccountShortName);
+        CustomerLoans.goToTasksForCustomerLoan(customerAccount, loanShortName, loanAccountShortName);
         Customers.clickButtonForTask("DISBURSE");
         Customers.verifyTransactionCharge("Processing fee", "150.00");
         Customers.verifyTransactionCharge("Loan origination fee", "50.00");
diff --git a/Specs/loans1_creation&assignment.js b/Specs/loans1_creation&assignment.js
index 32d3c36..e46b86c 100644
--- a/Specs/loans1_creation&assignment.js
+++ b/Specs/loans1_creation&assignment.js
@@ -286,6 +286,7 @@
     });
     it('should enable the first loan product', function () {
         Common.clickLinkShowForRowWithId(loanShortName);
+        //ToDo: details
         CustomerLoans.verifyMessagesAreDisplayed("Product not enabled", "To assign this product to a member it needs to be enabled first");
         Loans.clickButtonEnableProduct();
         Common.verifyMessagePopupIsDisplayed("Product is going to be enabled");
@@ -329,6 +330,19 @@
         Loans.clickEnabledCreateProductButton();
         Common.verifyMessagePopupIsDisplayed("Product is going to be saved");
     });
+    it('should configure loan loss provision', function () {
+        Common.clickLinkShowForRowWithId(loanShortName2);
+        //ToDo: details
+        Loans.clickLinkLossProvisionConfigurationForLoanProduct(loanShortName2);
+        Loans.clickButtonEditLossProvisionConfigurationForLoanProduct(loanShortName2);
+        Loans.clickButtonAddStep();
+        Loans.enterTextIntoPercentProvisionInputField("5", 1);
+        Loans.clickButtonAddStep();
+        Loans.enterTextIntoDaysLateInputField("10", 2);
+        Loans.enterTextIntoPercentProvisionInputField("25", 2);
+        Loans.clickEnabledUpdateLossProvisionButton();
+        Common.verifyMessagePopupIsDisplayed("oss provision configuration is going to be saved");
+    });
     it('should not be able to select loan product if not enabled', function () {
         Customers.goToManageCustomersViaSidePanel();
         Common.clickSearchButtonToMakeSearchInputFieldAppear();
@@ -485,31 +499,84 @@
         CustomerLoans.verifyCreatedByForLoanIs(employeeIdentifier);
     });
     it('planned payment', function () {
-        CustomerLoans.viewPlannedPaymentForCustomerLoan(customerAccount, loanShortName, loanAccountShortName);
-        //error, ATEN-474
+        // CustomerLoans.viewPlannedPaymentForCustomerLoan(customerAccount, loanShortName2, loanAccountShortName);
+        // error, ATEN-474
+        // CustomerLoans.verifyBalanceForPlannedPaymentsInRow("1500" ,"1");
+        // Common.clickBackButtonInTitleBar();
     });
     it('debt/income ratio', function () {
         CustomerLoans.viewDebtIncomeReportForCustomerLoan(customerAccount, loanShortName2, loanAccountShortName);
         CustomerLoans.verifyMemberRatioIs("01.50");
+        //ToDo: more details
         CustomerLoans.verifyCoSignerRatioIs("00.42");
+        //ToDo: more details
         Common.clickBackButtonInTitleBar();
     });
     it('should be able to edit loan account until it has been approved', function () {
         CustomerLoans.clickUpdateLoanAccountForMember(customerAccount, loanShortName2, loanAccountShortName);
-        browser.pause();
-        //edit loan account to different one (different product, different settings)
-        CustomerLoans.selectProduct(loanShortName);
-        //error principal & interest rate, bug
-        CustomerLoans.verifyButtonUpdateMemberLoanDisabled();
-        CustomerLoans.enterTextIntoPrincipalAmountInputField(10000);
-        CustomerLoans.enterTextIntoInterestRateInputField("3.60");
-        CustomerLoans.verifyButtonUpdateMemberLoanDisabled();
+        //edit loan account settings
+        //ToDo: different loan product - should not be possible or work as expected (currently error on saving)
+        CustomerLoans.enterTextIntoPrincipalAmountInputField("500");
+        CustomerLoans.verifyInterestRateInputFieldIsDisabledAndHasText("15.00");
+        CustomerLoans.enterTextIntoTermInputField("50");
+        CustomerLoans.selectTemporalUnitForTerm("weeks");
+        CustomerLoans.enterTextIntoPaymentPeriodInputField("10");
+        CustomerLoans.selectPaymentPeriod("weeks");
         CustomerLoans.clickEnabledUpdateMemberLoanButton();
-        //unexpected error, bug
         Common.verifyMessagePopupIsDisplayed("Case is going to be saved");
         //planned payment
-        //...
+        CustomerLoans.viewPlannedPaymentForCustomerLoan(customerAccount, loanShortName2, loanAccountShortName);
+        CustomerLoans.verifyBalanceForPlannedPaymentsInRow("500" ,"1");
+        CustomerLoans.verifyBalanceForPlannedPaymentsInRow("0" ,"6");
+        Common.clickBackButtonInTitleBar();
+        //edit loan account again and update debt to income ratio
+        CustomerLoans.clickUpdateLoanAccountForMember(customerAccount, loanShortName2, loanAccountShortName);
+        CustomerLoans.goToStepDebtToIncomeRatio();
+        CustomerLoans.removeDebtAtPosition(1);
+        CustomerLoans.verifyDebtTotalIs("5,000.00");
+        CustomerLoans.verifyDebtIncomeRatioIs("00.50");
+        CustomerLoans.enterTextIntoAmountInputFieldForIncome("100000", 2);
+        CustomerLoans.verifyIncomeTotalIs("105,000.00");
+        CustomerLoans.verifyDebtIncomeRatioIs("00.05");
+        CustomerLoans.clickEnabledUpdateMemberLoanButton();
+        Common.verifyMessagePopupIsDisplayed("Case is going to be saved");
+        //debt to income report
+        CustomerLoans.viewDebtIncomeReportForCustomerLoan(customerAccount, loanShortName2, loanAccountShortName);
+        CustomerLoans.verifyMemberRatioIs("00.05");
+        CustomerLoans.verifyCoSignerRatioIs("00.42");
+        //ToDo: more details
+        Common.clickBackButtonInTitleBar();
     });
+    it('should not be able to edit loan account once it has been approved', function () {
+        //open loan; can still be edited
+        CustomerLoans.goToTasksForCustomerLoan(customerAccount, loanShortName2, loanAccountShortName);
+        CustomerLoans.clickButtonForTask("OPEN");
+        browser.pause();
+        Common.verifyMessagePopupIsDisplayed("Case is going to be updated");
+        CustomerLoans.verifyLoanStatusIs("PENDING");
+        CustomerLoans.verifyEditLoanButtonIsDisplayed();
+        //approve loan; can no longer be edited
+        CustomerLoans.goToTasksForCustomerLoan(customerAccount, loanShortName2, loanAccountShortName);
+        //ToDo: task DENY
+        CustomerLoans.clickButtonForTask("APPROVE");
+        Common.verifyMessagePopupIsDisplayed("Case is going to be updated");
+        CustomerLoans.verifyLoanStatusIs("APPROVED");
+        CustomerLoans.verifyEditLoanButtonIsNotDisplayed();
+        //disburse loan; default fees & loss provision configured
+        CustomerLoans.goToTasksForCustomerLoan(customerAccount, loanShortName2, loanAccountShortName);
+        browser.pause();
+        //ToDo: task CLOSE
+        CustomerLoans.clickButtonForTask("DISBURSE");
+        Common.verifyMessagePopupIsDisplayed("Case is going to be updated");
+        CustomerLoans.verifyLoanStatusIs("ACTIVE");
+        CustomerLoans.verifyEditLoanButtonIsNotDisplayed();
+        browser.pause();
+        //ToDo: task CLOSE
+    });
+    it('should be able to add documents to loan', function () {
+        CustomerLoans.viewLoanDocumentsForCustomerLoan(customerAccount, loanShortName2, loanAccountShortName);
+    });
+
     it('update/deletion of unassigned/assigned product', function () {
         //assigned product cannot be deleted anymore
         //what about disabled/edited?
diff --git a/conf.js b/conf.js
index 3339ef4..8c0bb55 100644
--- a/conf.js
+++ b/conf.js
@@ -6,7 +6,7 @@
 
   framework: 'jasmine',
   specs: [
-      'Specs/teller_management.js'
+      'Specs/loans1_creation&assignment.js'
   ],
     directConnect: true,
     allScriptsTimeout: 45000,
@@ -31,6 +31,7 @@
         browser.ignoreSynchronization = true;
         //browser.driver.get('https://pilot.kuelap.io/index.html');
         browser.driver.get('http://localhost:4200');
+        //browser.driver.get(' https://sandbox.kuelap.io/index.html');
 
         browser.driver.findElement(by.css(".mat-input-element[formcontrolname='tenant']")).sendKeys('playground');
         browser.driver.findElement(by.css(".mat-input-element[formcontrolname='username']")).sendKeys('operator');
