diff --git a/Pages/Loans.js b/Pages/Loans.js
index 778fcc6..d4964b3 100644
--- a/Pages/Loans.js
+++ b/Pages/Loans.js
@@ -220,6 +220,15 @@
             });
         }).click();
     },
+    clickEnabledUpdateProductButton: 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 PRODUCT";
+            });
+        }).click();
+    },
     clickEnabledUpdateLossProvisionButton: function(){
         browser.executeScript("arguments[0].scrollIntoView();", primaryButton.first().getWebElement());
         browser.wait(EC.elementToBeClickable(primaryButton.first()), 3000);
@@ -411,6 +420,10 @@
         browser.sleep(500);
         expect($("a[title='Edit product']").isPresent()).toBe(true);
     },
+    clickEditLoanProductButton: function(){
+        browser.sleep(500);
+        $("a[title='Edit product']").click();
+    },
     verifyEditLoanProductButtonIsNotDisplayed: function(){
         browser.sleep(500);
         expect($("a[title='Edit product']").isPresent()).toBe(false);
@@ -478,4 +491,20 @@
         browser.wait(EC.visibilityOf($(".mat-option")), 5000);
         element(by.cssContainingText('.mat-option',name)).click();
     },
+    verifyTermForLoanProduct: function(term) {
+        expect($$("fims-layout-card-over .mat-list-text").filter(function (elem, index) {
+            return elem.$("h3").getText().then(function (text) {
+                return text === "Term";
+            });
+        }).first().$("p").getText().then(function (text) {
+            return text === term;
+        })).toBe(true);
+    },
+    removeRangeAtPosition: function(position){
+        buttons.filter(function(elem, index) {
+            return elem.$("span").getText().then(function(text) {
+                return text === "REMOVE RANGE";
+            });
+        }).get(position-1).click();
+    },
 };
\ No newline at end of file
diff --git a/Specs/cheque_management.js b/Specs/cheque_management.js
index a71ea08..2410513 100644
--- a/Specs/cheque_management.js
+++ b/Specs/cheque_management.js
@@ -26,6 +26,7 @@
     depositName = helper.getRandomString(8);
     tellerAccount = helper.getRandomString(4);
     chequesReceivableAccount = helper.getRandomString(4);
+    cashOverShortAccount = "COS_" + helper.getRandomString(4);
     revenueAccount = helper.getRandomString(4);
     loanShortName = helper.getRandomString(6);
     taskIdentifier = helper.getRandomString(3);
@@ -62,6 +63,15 @@
         Accounting.enterTextIntoAccountNameInputField("Revenue from deposit charges");
         Accounting.clickButtonCreateAccount();
         Common.verifyMessagePopupIsDisplayed("Account is going to be saved");
+        Accounting.goToAccountingViaSidePanel();
+        Common.clickLinkShowForRowWithId("2000");
+        Common.clickLinkShowForRowWithId("3300");
+        Accounting.clickCreateNewAccountInLedger("3300");
+        Accounting.enterTextIntoAccountIdentifierInputField(cashOverShortAccount);
+        Accounting.verifyRadioExpenseToBeSelected();
+        Accounting.enterTextIntoAccountNameInputField("Cash over short account");
+        Accounting.clickButtonCreateAccount();
+        Common.verifyMessagePopupIsDisplayed("Account is going to be saved");
     });
     it('should create a new employee with administrator permissions', function () {
         Employees.goToManageEmployeesViaSidePanel();
@@ -90,6 +100,7 @@
         Offices.enterTextIntoTellerAccountInputFieldAndSelectMatchingEntry(tellerAccount);
         Offices.enterTextIntoVaultAccountInputFieldAndSelectMatchingEntry("7351");
         Offices.enterTextIntoChequesReceivableAccountInputFieldAndSelectMatchingEntry(chequesReceivableAccount);
+        Offices.enterTextIntoCashOverShortInputFieldAndSelectMatchingEntry(cashOverShortAccount);
         Offices.clickCreateTellerButton();
         Common.verifyMessagePopupIsDisplayed("Teller is going to be saved");
         //workaround for current bug that teller is not always listed immediately
@@ -204,6 +215,9 @@
         Common.verifyMessagePopupIsDisplayed("Transaction successfully confirmed");
     });
     it('customer should be able to cash cheque - cheque is not open/not on us', function () {
+        //ToDo: workaround for bug; remove once fixed
+        Teller.goToTellerManagementViaSidePanel();
+        Teller.clickButtonShowAtIndex(0);
         Teller.clickOnCashChequeForCustomer(customerAccount);
         Cheques.enterTextIntoChequeNumberInputField("123456");
         Cheques.enterTextIntoBranchSortCodeInputField(branchSortCode);
diff --git a/Specs/loans1_creation&assignment.js b/Specs/loans1_creation&assignment.js
index f4af86e..f207ad1 100644
--- a/Specs/loans1_creation&assignment.js
+++ b/Specs/loans1_creation&assignment.js
@@ -708,21 +708,29 @@
         //Loans.verifyDeleteLoanProductButtonIsNotDisplayed();
         Loans.clickDeleteLoanProductButton();
         Common.confirmAction();
-        Common.verifyErrorMessageDisplayedWithTitleAndText("Product can't be deleted", "Product is already assigned to a customer");
+        Common.verifyErrorMessageDisplayedWithTitleAndText("Product can't be deleted", "Product is already assigned to a member.");
         Common.clickButtonOKInErrorMessage();
-        //tasks: try to add tasks: bug ATEN-318
     });
     it('unassigned product can be edited & deleted', function () {
         Loans.goToLoanProductsViaSidePanel();
-        Common.clickLinkShowForRowWithId(loanShortName2);
+        Common.clickLinkShowForRowWithId(loanShortName);
         CustomerLoans.verifyMessagesAreDisplayed("Product enabled", "This product can be assigned to a member");
         //disable product
         Loans.clickButtonDisableProduct();
         Common.verifyMessagePopupIsDisplayed("Product is going to be disabled");
         CustomerLoans.verifyMessagesAreDisplayed("Product not enabled", "To assign this product to a member it needs to be enabled first");
         //edit loan product
+        Loans.verifyEditLoanProductButtonIsDisplayed();
+        Loans.clickEditLoanProductButton();
+        Loans.enterTextIntoTermInputField("5000");
+        Loans.selectRadioButtonWeeks();
+        Loans.clickEnabledUpdateProductButton();
+        Common.verifyMessagePopupIsDisplayed("Product is going to be saved");
+        Loans.verifyTermForLoanProduct("5,000 YEARS");
+        //ToDo: customer loan, verify update
         //delete loan product
         Loans.clickDeleteLoanProductButton();
         Common.confirmAction();
+        Common.verifyMessagePopupIsDisplayed("Product is going to be deleted");
     });
 });
\ No newline at end of file
diff --git a/Specs/loans2_fees.js b/Specs/loans2_fees.js
index 91a7154..cdfdb78 100644
--- a/Specs/loans2_fees.js
+++ b/Specs/loans2_fees.js
@@ -466,8 +466,8 @@
         Teller.enterTextIntoAmountInputField("3000");
         Teller.clickEnabledCreateTransactionButton();
         Teller.verifyTransactionAmount("3000");
-        // Teller.verifyTransactionCharge("repay-fees", "2675");
-        // Teller.verifyTransactionCharge("repay-principal", "325");
+        //ToDo: Teller.verifyTransactionCharge("repay-fees", "2675");
+        //ToDo: Teller.verifyTransactionCharge("repay-principal", "325");
         Teller.verifyTransactionCharge("Total", "3000");
         Teller.clickEnabledConfirmTransactionButton();
         Common.verifyMessagePopupIsDisplayed("Transaction successfully confirmed");
@@ -490,10 +490,24 @@
         Loans.clickLinkManageFeesForLoanProduct(loanShortName);
         Common.clickLinkShowForRowWithId("disbursement-fee");
         Loans.clickButtonEditDisbursementFeeForLoanProduct(loanShortName);
-        browser.pause();
-
+        //verify proportional set to "Maximum balance", is set to "Repayment" however
+        Loans.enterTextIntoFeeAmountInputField("100");
+        Loans.selectRadioFixed();
+        Loans.selectRangeByName("MyRange_1");
+        Loans.selectRangeSegmentByName("MyStart(0.00 - 28,000.00)");
+        Loans.clickEnabledUpdateRangeButton();
+        Common.verifyMessagePopupIsDisplayed("Fee is going to be saved");
+        Common.clickBackButtonInTitleBar();
     });
     it('edit range in use by fee', function () {
-        //???
+        //bug: currently ranges can not be added, edited, or deleted anymore if loan product assigned to a member already
+        Loans.clickLinkManageRangesForLoanProduct(loanShortName);
+        Common.clickLinkShowForRowWithId("MyRange_1");
+        Loans.clickButtonEditRange();
+        Loans.removeRangeAtPosition(1);
+        //ToDo: range end for first range segment updates to 50,000
+        Loans.enterTextIntoRangeSegmentStartInputField("45000", 2);
+        Loans.clickEnabledUpdateRangeButton();
+        Common.verifyMessagePopupIsDisplayed("Range is going to be saved");
     });
 });
\ No newline at end of file
