diff --git a/compute.yaml b/compute.yaml
index 08e8153dd4..bc13509c33 100644
--- a/compute.yaml
+++ b/compute.yaml
@@ -73,6 +73,8 @@ parameters:
     description: Flavor for the nova compute node
     type: string
     default: baremetal
+    constraints:
+      - custom_constraint: nova.flavor
   GlanceHost:
     type: string
     default: ''  # Has to be here because of the ignored empty value bug
@@ -87,6 +89,8 @@ parameters:
   Image:
     type: string
     default: overcloud-compute
+    constraints:
+      - custom_constraint: glance.image
   ImageUpdatePolicy:
     default: 'REBUILD_PRESERVE_EPHEMERAL'
     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
@@ -95,6 +99,8 @@ parameters:
     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
     type: string
     default: default
+    constraints:
+      - custom_constraint: nova.keypair
   KeystoneHost:
     type: string
     default: ''
diff --git a/controller.yaml b/controller.yaml
index 459b7f75ec..0c76f49646 100644
--- a/controller.yaml
+++ b/controller.yaml
@@ -97,6 +97,8 @@ parameters:
     default: baremetal
     description: Flavor for control nodes to request when deploying.
     type: string
+    constraints:
+      - custom_constraint: nova.flavor
   GlanceNotifierStrategy:
     description: Strategy to use for Glance notification queue
     type: string
@@ -131,6 +133,8 @@ parameters:
   Image:
     type: string
     default: overcloud-control
+    constraints:
+      - custom_constraint: glance.image
   ImageUpdatePolicy:
     default: 'REBUILD_PRESERVE_EPHEMERAL'
     description: What policy to use when reconstructing instances. REBUILD for rebuilds, REBUILD_PRESERVE_EPHEMERAL to preserve /mnt.
@@ -139,6 +143,8 @@ parameters:
     default: default
     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
     type: string
+    constraints:
+      - custom_constraint: nova.keypair
   KeystoneCACertificate:
     default: ''
     description: Keystone self-signed certificate authority certificate.
diff --git a/overcloud-source.yaml b/overcloud-source.yaml
index 742429f1e8..64deb95bed 100644
--- a/overcloud-source.yaml
+++ b/overcloud-source.yaml
@@ -58,6 +58,8 @@ parameters:
   controllerImage:
     type: string
     default: overcloud-control
+    constraints:
+      - custom_constraint: glance.image
   ControlVirtualInterface:
     default: 'br-ex'
     description: Interface where virtual ip will be assigned.
@@ -160,6 +162,8 @@ parameters:
     default: default
     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
     type: string
+    constraints:
+      - custom_constraint: nova.keypair
   KeystoneCACertificate:
     default: ''
     description: Keystone self-signed certificate authority certificate.
@@ -297,6 +301,8 @@ parameters:
   NovaImage:
     type: string
     default: overcloud-compute
+    constraints:
+      - custom_constraint: glance.image
   NovaPassword:
     default: unset
     description: The password for the nova service account, used by nova-api.
@@ -309,10 +315,14 @@ parameters:
     default: baremetal
     description: Flavor for compute nodes to request when deploying.
     type: string
+    constraints:
+      - custom_constraint: nova.flavor
   OvercloudControlFlavor:
     default: baremetal
     description: Flavor for control nodes to request when deploying.
     type: string
+    constraints:
+      - custom_constraint: nova.flavor
   PublicVirtualFixedIPs:
     default: []
     description: >
diff --git a/overcloud-without-mergepy.yaml b/overcloud-without-mergepy.yaml
index 4df8587dae..e171ff82ab 100644
--- a/overcloud-without-mergepy.yaml
+++ b/overcloud-without-mergepy.yaml
@@ -59,6 +59,8 @@ parameters:
     default: default
     description: Name of an existing EC2 KeyPair to enable SSH access to the instances
     type: string
+    constraints:
+      - custom_constraint: nova.keypair
   NeutronBridgeMappings:
     description: >
       The OVS logical->physical bridge mappings to use. See the Neutron
@@ -185,10 +187,14 @@ parameters:
   controllerImage:
     type: string
     default: overcloud-control
+    constraints:
+      - custom_constraint: glance.image
   OvercloudControlFlavor:
     default: baremetal
     description: Flavor for control nodes to request when deploying.
     type: string
+    constraints:
+      - custom_constraint: nova.flavor
   ControlVirtualInterface:
     default: 'br-ex'
     description: Interface where virtual ip will be assigned.
@@ -393,10 +399,14 @@ parameters:
   NovaImage:
     type: string
     default: overcloud-compute
+    constraints:
+      - custom_constraint: glance.image
   OvercloudComputeFlavor:
     description: Use this flavor
     type: string
     default: baremetal
+    constraints:
+      - custom_constraint: nova.flavor
 
 # Block storage specific parameters
   BlockStorageCount: