diff --git a/docs/en_US/cloud_edb_biganimal.rst b/docs/en_US/cloud_edb_biganimal.rst
index 7103d4e61..173cc5642 100644
--- a/docs/en_US/cloud_edb_biganimal.rst
+++ b/docs/en_US/cloud_edb_biganimal.rst
@@ -36,7 +36,8 @@ details.
 
 * Use the *Region* field to select the region.
 
-* Use the *Database version* field to specify the PostgreSQL version to deploy.
+* Use the *Public IP range* field to specify the IP Address range for permitting the
+  inbound traffic. Leave it blank for 0.0.0.0/0
 
 * Use the *Instance type* field to select the instance type.
 
@@ -49,10 +50,7 @@ details.
 
 * Use the *Volume properties* field to specify the storage capacity.
 
-* Use the *Cloud type* field to specify the private or public network.
 
-* Use the *Public IP range* field to specify the IP Address range for permitting the
-  inbound traffic. Leave it blank for 0.0.0.0/0
 
 .. image:: images/cloud_biganimal_database.png
     :alt: Cloud Deployment Provider
@@ -74,6 +72,12 @@ Use the fields from the Database Details tab to specify the Instance details.
 
 * Use the *Confirm password* field to repeat the password.
 
+* Use the *High Availability* field to create the cluster with high availability, which creates a cluster
+  with one primary and up to two standby replicas in different availability zones.
+
+* Use the *Number of standby replicas* field to specify the standby replicas.
+
+
 .. image:: images/cloud_biganimal_review.png
     :alt: Cloud Deployment Provider
     :align: center
diff --git a/docs/en_US/images/cloud_biganimal_credentials.png b/docs/en_US/images/cloud_biganimal_credentials.png
index 9e64e3fef2a4fbe257bc58a411af5c597d590f66..fd8567acaf0984df9253517df88254d9b4d5759b 100644
GIT binary patch
diff --git a/docs/en_US/images/cloud_biganimal_database.png b/docs/en_US/images/cloud_biganimal_database.png
index df13c561e228b0d9919f2c7d691aaf0f6f4e1540..774f159fc68bee400c7c9ca9d8a9fe57c81f75d6 100644
GIT binary patch
diff --git a/docs/en_US/images/cloud_biganimal_instance.png b/docs/en_US/images/cloud_biganimal_instance.png
index ea39553cb1c44b7f161713ab0f48cd881019846f..f05d6809c570e457df0a2a94e09a366d8e4fd36b 100644
GIT binary patch
diff --git a/docs/en_US/images/cloud_biganimal_provider.png b/docs/en_US/images/cloud_biganimal_provider.png
index 5508a567c058a7e2c8a6b55ac75a201002e35f96..b10f23f50d3c88a7b23d42a8196e27b1ff8de1ff 100644
GIT binary patch
diff --git a/docs/en_US/images/cloud_biganimal_review.png b/docs/en_US/images/cloud_biganimal_review.png
index 7a5eebd10dec1933d22657237bfe1ce8e24d08d2..a533fbd1031c3def8db28de05b8a668bb3775e72 100644
GIT binary patch
diff --git a/web/pgacloud/providers/biganimal.py b/web/pgacloud/providers/biganimal.py
index fb6afebb2..5185741b2 100644
--- a/web/pgacloud/providers/biganimal.py
+++ b/web/pgacloud/providers/biganimal.py
@@ -70,17 +70,18 @@ class BigAnimalProvider(AbsProvider):
         parser_create_instance.add_argument('--public-ip', default='',
                                             help='Public IP '
                                                  '(default: 127.0.0.1)')
-        parser_create_instance.add_argument('--high-availability',
+        parser_create_instance.add_argument('--cluster-arch',
                                             required=True,
-                                            help='High Availability')
+                                            help='Cluster Architecture')
+        parser_create_instance.add_argument('--nodes',
+                                            required=True,
+                                            help='No of Nodes')
 
     def cmd_create_instance(self, args):
         """ Create a biganimal cluster """
 
         try:
             private_network = True if args.private_network == '1' else False
-            high_availability = True if args.high_availability == '1' else\
-                False
             ip = args.public_ip if args.public_ip else '0.0.0.0/0'
             IpRanges = []
 
@@ -107,7 +108,8 @@ class BigAnimalProvider(AbsProvider):
                 'replicas': 3,
                 'volumePropertiesId': args.volume_properties,
                 'volumeTypeId': args.volume_type,
-                'zoneRedundantHa': high_availability,
+                'clusterArch': {'id': args.cluster_arch, 'nodes': int(
+                    args.nodes)},
                 'pgConfigMap': [],
             }
 
diff --git a/web/pgadmin/misc/cloud/biganimal/__init__.py b/web/pgadmin/misc/cloud/biganimal/__init__.py
index b8a6a3f3b..285d7c7c4 100644
--- a/web/pgadmin/misc/cloud/biganimal/__init__.py
+++ b/web/pgadmin/misc/cloud/biganimal/__init__.py
@@ -27,6 +27,10 @@ from pgadmin.utils.constants import MIMETYPE_APP_JSON
 
 MODULE_NAME = 'biganimal'
 
+SINGLE_CLUSTER_ARCH = 'single'
+HA_CLUSTER_ARCH = 'ha'  # High Availability
+EHA_CLUSTER_ARCH = 'eha'  # Extreme High Availability
+
 
 class BigAnimalModule(PgAdminModule):
     """Cloud module to deploy on EDB BigAnimal"""
@@ -285,10 +289,12 @@ class BigAnimalProvider():
         if resp.status_code == 200 and resp.content:
             pg_types_resp = json.loads(resp.content)
             for value in pg_types_resp['pgTypesList']:
-                pg_types.append({
-                    'label': value['name'],
-                    'value': value['id']
-                })
+                # Extreme HA is in Beta, so avoid it
+                if len(value['supportedClusterArchitectureIds']) != 1:
+                    pg_types.append({
+                        'label': value['name'],
+                        'value': value['id']
+                    })
         return pg_types
 
     def get_postgres_versions(self):
@@ -366,10 +372,15 @@ def deploy_on_biganimal(data):
     _label = data['instance_details']['name']
     _private_network = '1' if str(data['instance_details']['cloud_type']
                                   ) == 'private' else '0'
-    _high_availability = '1' if data['db_details']['high_availability']\
-        else '0'
     _instance_size = data['instance_details']['instance_size'].split('||')[1]
 
+    cluster_arch = SINGLE_CLUSTER_ARCH
+    nodes = 1
+
+    if data['db_details']['high_availability']:
+        cluster_arch = HA_CLUSTER_ARCH
+        nodes = int(data['db_details']['replicas']) + nodes
+
     args = [_cmd_script,
             data['cloud'],
             'create-instance',
@@ -389,8 +400,10 @@ def deploy_on_biganimal(data):
             str(_instance_size),
             '--private-network',
             _private_network,
-            '--high-availability',
-            _high_availability
+            '--cluster-arch',
+            cluster_arch,
+            '--nodes',
+            str(nodes)
             ]
 
     if 'biganimal_public_ip' in data['instance_details']:
diff --git a/web/pgadmin/misc/cloud/static/js/biganimal.js b/web/pgadmin/misc/cloud/static/js/biganimal.js
index 47096fb74..596797ac7 100644
--- a/web/pgadmin/misc/cloud/static/js/biganimal.js
+++ b/web/pgadmin/misc/cloud/static/js/biganimal.js
@@ -188,6 +188,7 @@ export function getBigAnimalSummary(cloud, bigAnimalInstanceData, bigAnimalDatab
     createData('Database Type',  bigAnimalDatabaseData.database_type),
     createData('Database Version',  bigAnimalDatabaseData.postgres_version),
     createData('High Availability',  bigAnimalDatabaseData.high_availability),
+    createData('No of Standby Replicas',  bigAnimalDatabaseData.replicas),
   ];
 
   return [rows1, rows2, rows3, rows4];
@@ -211,6 +212,10 @@ export function validateBigAnimalStep3(cloudDBDetails, nodeInfo) {
   isEmptyString(cloudDBDetails.database_type) || isEmptyString(cloudDBDetails.postgres_version)) {
     isError = true;
   }
+
+  if(cloudDBDetails.high_availability == true && (isEmptyString(cloudDBDetails.replicas) || cloudDBDetails.replicas <= 0)) {
+    isError = true;
+  }
   if (isEmptyString(cloudDBDetails.gid)) cloudDBDetails.gid = nodeInfo['server_group']._id;
   return isError;
 }
diff --git a/web/pgadmin/misc/cloud/static/js/cloud_db_details_schema.ui.js b/web/pgadmin/misc/cloud/static/js/cloud_db_details_schema.ui.js
index b3d24387c..e0fbe9242 100644
--- a/web/pgadmin/misc/cloud/static/js/cloud_db_details_schema.ui.js
+++ b/web/pgadmin/misc/cloud/static/js/cloud_db_details_schema.ui.js
@@ -467,6 +467,7 @@ class BigAnimalDatabaseSchema extends BaseUISchema {
       database_type: '',
       postgres_version: '',
       high_availability: false,
+      replicas: 0,
       ...initValues
     });
 
@@ -487,7 +488,10 @@ class BigAnimalDatabaseSchema extends BaseUISchema {
       setErrMsg('confirm_password', gettext('Password must be 12 characters or more.'));
       return true;
     }
-
+    if (data.high_availability == true && (isEmptyString(data.replicas) || data.replicas <= 0)) {
+      setErrMsg('replicas', gettext('Please select no. of stand by replicas.'));
+      return true;
+    }
     return false;
   }
 
@@ -592,6 +596,7 @@ class BigAnimalHighAvailSchema extends BaseUISchema {
     super({
       oid: undefined,
       high_availability: false,
+      replicas: 0,
       ...initValues
     });
 
@@ -610,13 +615,25 @@ class BigAnimalHighAvailSchema extends BaseUISchema {
       {
         id: 'high_availability_note', type: 'note',
         mode: ['create'],
-        text: gettext('High availability clusters are configured with one primary and two '
-        + 'replicas with synchronous streaming replication. Clusters are configured across availability zones in regions with availability zones.'),
+        text: gettext('High availability clusters are configured with one primary and up to two '
+        + 'stand by replicas. Clusters are configured across availability zones in regions with availability zones.'),
       },{
-        id: 'high_availability', label: gettext('High Availability'), type: 'switch',
-        mode: ['create'],
-        helpMessage: gettext('Turning on high availability means your number of CPUs will triple, as will your cost.'),
-      }
+        id: 'high_availability', label: gettext('High availability'), type: 'switch',
+        mode: ['create']
+      },{
+        id: 'replicas', label: gettext('Number of standby replicas'), type: 'select',
+        mode: ['create'], deps: ['high_availability'],
+        controlProps: { allowClear: false },
+        helpMessage: gettext('Adding standby replicas will increase your number of CPUs, as well as your cost.'),
+        options: [
+          {'label': gettext('1'), 'value': 1},
+          {'label': gettext('2'), 'value': 2},
+        ], noEmpty: true,
+        disabled: (state) => {
+          if (state.high_availability == true) return false;
+          return true;
+        }
+      },
     ];
   }
 }
