diff --git a/scenario/test_neutron_autoscaling.py b/scenario/test_neutron_autoscaling.py
new file mode 100644
index 0000000..8f769ef
--- /dev/null
+++ b/scenario/test_neutron_autoscaling.py
@@ -0,0 +1,124 @@
+# Licensed under the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License. You may obtain
+# a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+#    License for the specific language governing permissions and limitations
+#    under the License.
+
+from heat_integrationtests.common import test
+
+test_template = '''
+heat_template_version: 2014-10-16
+
+description: Auto-scaling Test
+
+parameters:
+  image_id:
+    type: string
+    label: Image ID
+    description: Image ID from configurations
+  capacity:
+    type: string
+    label: Capacity
+    description: Auto-scaling group desired capacity
+  fixed_subnet_name:
+    type: string
+    label: fixed subnetwork ID
+    description: subnetwork ID used for autoscaling
+  instance_type:
+    type: string
+    label: instance_type
+    description: type of instance to launch
+
+resources:
+  test_pool:
+    type: OS::Neutron::Pool
+    properties:
+      description: Test Pool
+      lb_method: ROUND_ROBIN
+      name: test_pool
+      protocol: HTTP
+      subnet: { get_param: fixed_subnet_name }
+      vip: {
+        "description": "Test VIP",
+        "protocol_port": 80,
+        "name": "test_vip"
+      }
+  load_balancer:
+    type: OS::Neutron::LoadBalancer
+    properties:
+      protocol_port: 80
+      pool_id: { get_resource: test_pool }
+  launch_config:
+    type: AWS::AutoScaling::LaunchConfiguration
+    properties:
+      ImageId: { get_param: image_id }
+      InstanceType: { get_param: instance_type }
+  server_group:
+    type: AWS::AutoScaling::AutoScalingGroup
+    properties:
+      AvailabilityZones : ["nova"]
+      LaunchConfigurationName : { get_resource : launch_config }
+      MinSize : 1
+      MaxSize : 5
+      DesiredCapacity: { get_param: capacity }
+      LoadBalancerNames : [ { get_resource : load_balancer } ]
+'''
+
+
+class NeutronAutoscalingTest(test.HeatIntegrationTest):
+    """"
+    The class is responsible for testing of neutron resources autoscaling.
+    """
+
+    def setUp(self):
+        super(NeutronAutoscalingTest, self).setUp()
+        self.client = self.orchestration_client
+        if not self.conf.minimal_image_ref:
+            raise self.skipException("No minimal image configured to test")
+        if not self.conf.instance_type:
+            raise self.skipException("No flavor configured to test")
+        if not self.conf.fixed_subnet_name:
+            raise self.skipException("No sub-network configured to test")
+
+    def test_neutron_autoscaling(self):
+        """
+        Check autoscaling of load balancer members  in heat.
+
+        The alternative scenario is the following:
+            1. Initialize environment variables.
+            2. Create a stack with a load balancer.
+            3. Check that the load balancer created
+            one load balancer member for stack.
+            4. Update stack definition: increase desired capacity of stack.
+            5. Check that number of members in load balancer was increased.
+        """
+
+        # Init env variables
+        env = {'parameters': {"image_id": self.conf.minimal_image_ref,
+                              "capacity": "1",
+                              "instance_type": self.conf.instance_type,
+                              "fixed_subnet_name":
+                                  self.conf.fixed_subnet_name,
+                              }}
+
+        # Create stack
+        stack_id = self.stack_create(template=test_template,
+                                     environment=env)
+
+        members = self.network_client.list_members()
+        self.assertEqual(1, len(members["members"]))
+
+        # Increase desired capacity and update the stack
+        env["parameters"]["capacity"] = "2"
+        self.update_stack(stack_id,
+                          template=test_template,
+                          environment=env)
+
+        upd_members = self.network_client.list_members()
+        self.assertEqual(2, len(upd_members["members"]))
\ No newline at end of file
