diff --git a/functional/test_conditions.py b/functional/test_conditions.py
index aefd9e8..6ac01e1 100644
--- a/functional/test_conditions.py
+++ b/functional/test_conditions.py
@@ -20,6 +20,9 @@
     Default: test
     Type: String
     AllowedValues: [prod, test]
+  zone:
+    Type: String
+    Default: beijing
 Conditions:
   Prod: {"Fn::Equals" : [{Ref: env_type}, "prod"]}
   Test:
@@ -27,6 +30,14 @@
     - Fn::Equals:
       - Ref: env_type
       - prod
+  Beijing_Prod:
+    Fn::And:
+    - Fn::Equals:
+      - Ref: env_type
+      - prod
+    - Fn::Equals:
+      - Ref: zone
+      - beijing
 Resources:
   test_res:
     Type: OS::Heat::TestResource
@@ -42,6 +53,11 @@
     Properties:
       value: just in test env
     Condition: Test
+  beijing_prod_res:
+    Type: OS::Heat::TestResource
+    Properties:
+      value: beijing_prod_res
+    Condition: Beijing_Prod
 Outputs:
   res_value:
     Value: {"Fn::GetAtt": [prod_res, output]}
@@ -53,6 +69,8 @@
   test_res1_value:
     Value: {"Fn::If": [Test, {"Fn::GetAtt": [test_res1, output]},
                        'no_test_res1']}
+  beijing_prod_res:
+    Value: {"Fn::If": [Beijing_Prod, {Ref: beijing_prod_res}, 'no_prod_res']}
 '''
 
 hot_template = '''
@@ -63,6 +81,9 @@
     type: string
     constraints:
       - allowed_values: [prod, test]
+  zone:
+    type: string
+    default: beijing
 conditions:
   prod: {equals : [{get_param: env_type}, "prod"]}
   test:
@@ -70,6 +91,14 @@
       equals:
       - get_param: env_type
       - prod
+  beijing_prod:
+    and:
+    - equals:
+      - get_param: zone
+      - beijing
+    - equals:
+      - get_param: env_type
+      - prod
 resources:
   test_res:
     type: OS::Heat::TestResource
@@ -85,6 +114,11 @@
     properties:
       value: just in test env
     condition: test
+  beijing_prod_res:
+    type: OS::Heat::TestResource
+    properties:
+      value: beijing_prod_res
+    condition: beijing_prod
 outputs:
   res_value:
     value: {get_attr: [prod_res, output]}
@@ -95,6 +129,9 @@
     value: {if: [prod, {get_resource: prod_res}, 'no_prod_res']}
   test_res1_value:
     value: {if: [test, {get_attr: [test_res1, output]}, 'no_test_res1']}
+  beijing_prod_res:
+    value: {if: [beijing_prod, {get_resource: beijing_prod_res},
+                 'no_prod_res']}
 '''
 
 
@@ -103,9 +140,13 @@
     def setUp(self):
         super(CreateUpdateResConditionTest, self).setUp()
 
-    def res_assert_for_prod(self, resources):
-        self.assertEqual(2, len(resources))
+    def res_assert_for_prod(self, resources, bj_prod=True):
         res_names = [res.resource_name for res in resources]
+        if bj_prod:
+            self.assertEqual(3, len(resources))
+            self.assertIn('beijing_prod_res', res_names)
+        else:
+            self.assertEqual(2, len(resources))
         self.assertIn('prod_res', res_names)
         self.assertIn('test_res', res_names)
 
@@ -116,7 +157,7 @@
         self.assertIn('test_res1', res_names)
         self.assertNotIn('prod_res', res_names)
 
-    def output_assert_for_prod(self, stack_id):
+    def output_assert_for_prod(self, stack_id, bj_prod=True):
         output = self.client.stacks.output_show(stack_id,
                                                 'res_value')['output']
         self.assertEqual('prod_res', output['output_value'])
@@ -133,6 +174,14 @@
             stack_id, 'test_res1_value')['output']
         self.assertEqual('no_test_res1', test_res_output['output_value'])
 
+        beijing_prod_res = self.client.stacks.output_show(
+            stack_id, 'beijing_prod_res')['output']
+        if bj_prod:
+            self.assertNotEqual('no_prod_res',
+                                beijing_prod_res['output_value'])
+        else:
+            self.assertEqual('no_prod_res', beijing_prod_res['output_value'])
+
     def output_assert_for_test(self, stack_id):
         output = self.client.stacks.output_show(stack_id,
                                                 'res_value')['output']
@@ -151,6 +200,10 @@
         self.assertEqual('just in test env',
                          test_res_output['output_value'])
 
+        beijing_prod_res = self.client.stacks.output_show(
+            stack_id, 'beijing_prod_res')['output']
+        self.assertEqual('no_prod_res', beijing_prod_res['output_value'])
+
     def test_stack_create_update_cfn_template_test_to_prod(self):
         stack_identifier = self.stack_create(template=cfn_template)
         resources = self.client.resources.list(stack_identifier)
@@ -166,6 +219,16 @@
         self.res_assert_for_prod(resources)
         self.output_assert_for_prod(stack_identifier)
 
+        parms = {'env_type': 'prod',
+                 'zone': 'shanghai'}
+        self.update_stack(stack_identifier,
+                          template=cfn_template,
+                          parameters=parms)
+
+        resources = self.client.resources.list(stack_identifier)
+        self.res_assert_for_prod(resources, False)
+        self.output_assert_for_prod(stack_identifier, False)
+
     def test_stack_create_update_cfn_template_prod_to_test(self):
         parms = {'env_type': 'prod'}
         stack_identifier = self.stack_create(template=cfn_template,
@@ -198,6 +261,16 @@
         self.res_assert_for_prod(resources)
         self.output_assert_for_prod(stack_identifier)
 
+        parms = {'env_type': 'prod',
+                 'zone': 'shanghai'}
+        self.update_stack(stack_identifier,
+                          template=hot_template,
+                          parameters=parms)
+
+        resources = self.client.resources.list(stack_identifier)
+        self.res_assert_for_prod(resources, False)
+        self.output_assert_for_prod(stack_identifier, False)
+
     def test_stack_create_update_hot_template_prod_to_test(self):
         parms = {'env_type': 'prod'}
         stack_identifier = self.stack_create(template=hot_template,
