diff --git a/tools/test/bin/onos-generate-activate-all-scenario b/tools/test/bin/onos-generate-activate-all-scenario
new file mode 100755
index 0000000..c12400b
--- /dev/null
+++ b/tools/test/bin/onos-generate-activate-all-scenario
@@ -0,0 +1,92 @@
+#!/usr/bin/env python
+
+import sys, os
+
+SCENARIO_HEADER = '''
+<!--
+  ~ Copyright 2019-present Open Networking Foundation
+  ~
+  ~ 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.
+  -->
+  
+  <!--
+     This scenario is auto generated by onos-generate-activate-all-scenario. DO NOT EDIT
+  -->
+  <scenario name="app-activate-all" description="Tests that all apps can be activated by themselves">
+    <group name="App-Activate-All">
+       <step name="App-Activate-All.Minimal-Apps"
+                 exec="onos-set-up-minimal-apps ${OCI}"/>
+'''
+
+SCENARIO_FOOTER = '''
+    </group>
+  </scenario>
+'''
+
+ACTIVATE_GROUP_TEMPLATE = '''
+        <group name="App-Activate-All.%(app_id)s" %(requires)s>
+           <step name="App-Activate-All.Activate-%(app_id)s"
+                 exec="onos ${OCI} app activate org.onosproject.%(app_id)s" %(requires)s/>
+           <group name="App-Activate-All.App-Check-%(app_id)s" requires="App-Activate-All.Activate-%(app_id)s">
+              <parallel var="${OC#}">
+                 <step name="App-Activate-All.App-Check-${#}-%(app_id)s"
+                       exec="onos-check-apps ${OC#} %(app_id)s includes"/>
+                 <step name="App-Activate-All.Check-Logs-${#}-%(app_id)s" exec="onos-check-logs ${OC#}"/>
+              </parallel>
+           </group>
+           <step name="App-Activate-All.App-Deactivate-%(app_id)s"
+                 exec="onos ${OCI} app deactivate org.onosproject.%(app_id)s" requires="App-Activate-All.App-Check-%(app_id)s"/>
+           <step name="App-Activate-All.Wait-For-Deactivate-%(app_id)s"
+                 exec="onos-check-apps ${OCI} org.onosproject.drivers" requires="App-Activate-All.App-Deactivate-%(app_id)s"/>      
+           <group name="App-Activate-All.App-Check-After-%(app_id)s" requires="App-Activate-All.Wait-For-Deactivate-%(app_id)s">
+              <parallel var="${OC#}">
+                 <step name="App-Activate-All.Check-Logs-After-${#}-%(app_id)s" exec="onos-check-logs ${OC#}"/>
+              </parallel>
+           </group>
+           <step name="App-Activate-All.Minimal-Apps-%(app_id)s" requires="App-Activate-All.App-Deactivate-%(app_id)s"
+                 exec="onos-set-up-minimal-apps ${OCI}"/>
+        </group>
+
+'''
+
+app_list = []
+app_list_file = ""
+
+if len(sys.argv) > 1:
+    app_list_file = sys.argv[1]
+else:
+    print "Usage: onos-generate-activate-all-scenario file-name-of-app-list"
+    sys.exit()
+
+with open(app_list_file) as apps:
+    for app in apps:
+        if not "#" in app:
+            normalized_app = app.strip(" \n")
+            if not normalized_app == "":
+                app_list.append(normalized_app)
+
+scenario = SCENARIO_HEADER + "\n"
+
+app_group_requires = 'requires="App-Activate-All.Minimal-Apps"'
+for app_id in app_list:
+    parameters = {
+        'requires': app_group_requires,
+        'app_id': app_id,
+    }
+    scenario = scenario + (ACTIVATE_GROUP_TEMPLATE % parameters)
+    app_group_requires = 'requires="App-Activate-All.' + app_id + '"'
+
+scenario = scenario + SCENARIO_FOOTER
+
+print scenario
+
