diff --git a/src/plugins/conditionSet/ConditionSetCompositionPolicy.js b/src/plugins/conditionSet/ConditionSetCompositionPolicy.js
new file mode 100644
index 0000000000..90179bad6f
--- /dev/null
+++ b/src/plugins/conditionSet/ConditionSetCompositionPolicy.js
@@ -0,0 +1,36 @@
+/*****************************************************************************
+ * Open MCT, Copyright (c) 2014-2019, United States Government
+ * as represented by the Administrator of the National Aeronautics and Space
+ * Administration. All rights reserved.
+ *
+ * Open MCT is 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.
+ *
+ * Open MCT includes source code licensed under additional open source
+ * licenses. See the Open Source Licenses file (LICENSES.md) included with
+ * this source code distribution or the Licensing information page available
+ * at runtime from the About dialog for additional information.
+ *****************************************************************************/
+
+export default function ConditionSetCompositionPolicy(openmct) {
+    return {
+        allow: function (parent, child) {
+            let parentType = parent.type;
+            let childType = child.type;
+
+            if (parentType === 'conditionSet' && childType !== 'condition') {
+                return false;
+            }
+
+            return true;
+        }
+    }
+}
diff --git a/src/plugins/conditionSet/ConditionSetCompositionPolicySpec.js b/src/plugins/conditionSet/ConditionSetCompositionPolicySpec.js
new file mode 100644
index 0000000000..d2c2b111e9
--- /dev/null
+++ b/src/plugins/conditionSet/ConditionSetCompositionPolicySpec.js
@@ -0,0 +1,63 @@
+/*****************************************************************************
+ * Open MCT, Copyright (c) 2014-2019, United States Government
+ * as represented by the Administrator of the National Aeronautics and Space
+ * Administration. All rights reserved.
+ *
+ * Open MCT is 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.
+ *
+ * Open MCT includes source code licensed under additional open source
+ * licenses. See the Open Source Licenses file (LICENSES.md) included with
+ * this source code distribution or the Licensing information page available
+ * at runtime from the About dialog for additional information.
+ *****************************************************************************/
+
+import ConditionSetCompositionPolicy  from './ConditionSetCompositionPolicy';
+import { createOpenMct } from "testTools";
+
+describe('ConditionSetCompositionPolicy', () => {
+    let policy;
+    let parentDomainObject;
+    let childDomainObject;
+    let composition;
+
+    beforeEach(function () {
+        policy = new ConditionSetCompositionPolicy();
+        parentDomainObject = {};
+        childDomainObject = {};
+        composition = {};
+    });
+
+    it('returns true for object types that are not conditionSets', function () {
+        parentDomainObject.type = 'random';
+        childDomainObject.type = '';
+        expect(policy.allow(parentDomainObject, childDomainObject)).toBe(true);
+    });
+
+    it('returns false for object types that are not conditions when parent is a conditionSet', function () {
+        parentDomainObject.type = 'conditionSet';
+        childDomainObject.type = '';
+        expect(policy.allow(parentDomainObject, childDomainObject)).toBe(false);
+    });
+
+    it('returns true for object types that are conditions when parent is a conditionSet', function () {
+        parentDomainObject.type = 'conditionSet';
+        childDomainObject.type = 'condition';
+        expect(policy.allow(parentDomainObject, childDomainObject)).toBe(true);
+    });
+
+    it('returns true for object types that are conditions when parent is not a conditionSet', function () {
+        parentDomainObject.type = 'random';
+        childDomainObject.type = 'condition';
+        expect(policy.allow(parentDomainObject, childDomainObject)).toBe(true);
+    });
+
+});