diff --git a/app/users/controllers/user-accounts-controller.html b/app/users/controllers/user-accounts-controller.html
index 9c80da6..b48626d 100644
--- a/app/users/controllers/user-accounts-controller.html
+++ b/app/users/controllers/user-accounts-controller.html
@@ -1,5 +1,42 @@
 <loader loading="loading"></loader>
 <div id="user-accounts">
+
+  <div class="row column acnt-prop-header">
+    <h1>User account properties</h1>
+  </div>
+
+  <div class="col-sm-12">
+    <form class="row column user-manage__form">
+      <div class="col-sm-12">
+        <label class="col-md-1 control-label" for="lockoutTime"> User Lockout Time (sec) </label>
+        <div class="col-md-3 acnt-prop__input-wrapper">
+          <input type="number" id="lockoutTime" min="30" max="600" ng-model="properties.AccountLockoutDuration"/>
+        </div>
+      </div>
+      <div class="col-sm-12">
+        <label class="col-md-1 control-label" for="lockoutThreshold"> Failed Login Attempts </label>
+        <div class="col-md-3 acnt-prop__input-wrapper">
+          <input type="number" id="lockoutThreshold" min="3" max="10" ng-model="properties.AccountLockoutThreshold"/>
+        </div>
+      </div>
+      <div class= "col-sm-12">
+        <label class="col-md-1 control-label"> Max Password Length </label>
+        <div class="col-md-3 acnt-prop__span-wrapper">
+          <span>{{properties.MaxPasswordLength}}</span>
+        </div>
+      </div>
+      <div class="col-sm-12">
+        <label class="col-md-1 control-label"> Min Password Length </label>
+        <div class="col-md-3 acnt-prop__span-wrapper">
+          <span>{{properties.MinPasswordLength}}</span>
+        </div>
+      </div>
+      <div class="acnt-prop__submit-wrapper">
+          <button type="button" class="btn-primary inline" ng-click="saveAllValues()">Save settings</button>
+      </div>
+    </form>
+  </div>
+
   <div class="row column">
     <h1>User account information</h1>
   </div>
diff --git a/app/users/controllers/user-accounts-controller.js b/app/users/controllers/user-accounts-controller.js
index b76d812..e12db00 100644
--- a/app/users/controllers/user-accounts-controller.js
+++ b/app/users/controllers/user-accounts-controller.js
@@ -17,6 +17,8 @@
       $scope.state = 'none';
       $scope.outMsg = '';
       $scope.loading = true;
+      $scope.properties = {};
+      $scope.origProp = {};
 
       function loadUserInfo() {
         $scope.loading = true;
@@ -33,6 +35,16 @@
                 function(error) {
                   console.log(JSON.stringify(error));
                 }),
+
+            APIUtils.getAllUserAccountProperties().then(
+                function(res) {
+                  $scope.properties = res;
+                  $scope.origProp = angular.copy($scope.properties);
+                },
+                function(error) {
+                  console.log(JSON.stringify(error));
+                }),
+
             APIUtils.getAccountServiceRoles().then(
                 function(res) {
                   $scope.roles = res;
@@ -50,6 +62,50 @@
         $scope.outMsg = '';
         loadUserInfo();
       };
+
+      $scope.saveAllValues = function() {
+        $scope.state = 'none';
+        $scope.outMsg = '';
+        $scope.loading = true;
+        var data = {};
+        if ($scope.properties.AccountLockoutDuration !=
+            $scope.origProp.AccountLockoutDuration) {
+          data['AccountLockoutDuration'] =
+              $scope.properties.AccountLockoutDuration;
+        }
+        if ($scope.properties.AccountLockoutThreshold !=
+            $scope.origProp.AccountLockoutThreshold) {
+          data['AccountLockoutThreshold'] =
+              $scope.properties.AccountLockoutThreshold;
+        }
+
+        if ($scope.properties.AccountLockoutDuration ==
+                $scope.origProp.AccountLockoutDuration &&
+            $scope.properties.AccountLockoutThreshold ==
+                $scope.origProp.AccountLockoutThreshold) {
+          // No change in properties, just return;
+          $scope.loading = false;
+          return;
+        }
+
+        APIUtils
+            .saveUserAccountProperties(
+                data['AccountLockoutDuration'], data['AccountLockoutThreshold'])
+            .then(
+                function(response) {
+                  $scope.state = 'success';
+                  $scope.outMsg =
+                      'User account properties has been updated successfully';
+                },
+                function(error) {
+                  $scope.outMsg = 'Account Properties Updation failed.';
+                })
+            .finally(function() {
+              loadUserInfo();
+              $scope.loading = false;
+            });
+      };
+
       $scope.setSelectedUser = function(user) {
         $scope.state = 'none';
         $scope.outMsg = '';
