diff --git a/tools/test/scenarios/bin/onos-find-and-check-map b/tools/test/scenarios/bin/onos-find-and-check-map
new file mode 100755
index 0000000..b419ca1
--- /dev/null
+++ b/tools/test/scenarios/bin/onos-find-and-check-map
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+
+# -----------------------------------------------------------------------------
+# Invokes the ONOS CLI and looks for a 'maps' entry with the given name
+# -----------------------------------------------------------------------------
+
+import subprocess
+import json
+import sys
+
+if len(sys.argv) != 4:
+    print "usage: onos-find-and-check-map onos-node map-name should-be-zero"
+    sys.exit(1)
+
+node = sys.argv[1]
+mapName = sys.argv[2]
+shouldBeZero = sys.argv[3]
+
+cli = subprocess.Popen(["onos", node, "maps", "-j"], stdout=subprocess.PIPE)
+json = json.loads(cli.communicate()[0])
+
+for map in json:
+    foundMapName = map["name"]
+    foundMapSize = map["size"]
+
+    print foundMapName
+    print foundMapSize
+
+    if foundMapName == mapName:
+        if (shouldBeZero == 'yes' and foundMapSize == 0) or \
+           (shouldBeZero != 'yes' and foundMapSize != 0):
+            sys.exit(0)
+        else:
+            sys.exit(1)
+
+sys.exit(1)
diff --git a/tools/test/scenarios/bin/onos-find-map b/tools/test/scenarios/bin/onos-find-map
new file mode 100755
index 0000000..b84b1a1
--- /dev/null
+++ b/tools/test/scenarios/bin/onos-find-map
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# -----------------------------------------------------------------------------
+# Invokes the ONOS CLI and looks for a 'maps' entry with the given name
+# -----------------------------------------------------------------------------
+
+NODE=$1
+MAP=$2
+ID=$3
+
+map_text=`( onos ${NODE} onos:maps ) | grep ${MAP}`
+
+if [ $? -ne 0 ]; then
+    exit 1
+fi
+
+map_size=`echo ${map_text} | sed s#^.*size=##`
+echo "@stc ${ID}Size=${map_size}"
diff --git a/tools/test/scenarios/maps-cli.xml b/tools/test/scenarios/maps-cli.xml
new file mode 100644
index 0000000..a76bd1a
--- /dev/null
+++ b/tools/test/scenarios/maps-cli.xml
@@ -0,0 +1,42 @@
+<!--
+  ~ Copyright 2017-present Open Networking Laboratory
+  ~
+  ~ 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.
+  -->
+<scenario name="maps-cli"
+          description="maps CLI command test">
+    <group name="Maps-Cli">
+
+        <!-- Shell script based checks -->
+        <!-- Check map known to have 0 entries -->
+        <step name="Maps-Cli.Find-Intent-Mapping-Shell"
+              exec="onos-find-map ${OCI} onos-intent-mapping intentMapping"/>
+        <step name="Maps-Cli.Check-Intent-Mapping-Shell" requires="^"
+              exec="test ${intentMappingSize} -eq 0"/>
+
+        <!-- Check map known to have at least 50 entries -->
+        <step name="Maps-Cli.Find-Intent-Mapping2-Shell"
+              exec="onos-find-map ${OCI} onos-app-ids appIdsMapping"/>
+        <step name="Maps-Cli.Check-App-Ids-Mapping-Shell" requires="^"
+              exec="test ${appIdsMappingSize} -gt 50"/>
+
+        <!-- Python based checks -->
+        <!-- Check map known to have 0 entries -->
+        <step name="Maps-Cli.Find-Intent-Mapping-Python"
+              exec="onos-find-and-check-map ${OCI} onos-intent-mapping yes"/>
+        <!-- Check map known to have more than 0 entries -->
+        <step name="Maps-Cli.Find-App-Id-Mapping"
+              exec="onos-find-and-check-map ${OCI} onos-app-ids no"/>
+
+    </group>
+</scenario>
diff --git a/tools/test/scenarios/smoke.xml b/tools/test/scenarios/smoke.xml
index 8981cd8..9c2a704 100644
--- a/tools/test/scenarios/smoke.xml
+++ b/tools/test/scenarios/smoke.xml
@@ -17,12 +17,14 @@
     <import file="${ONOS_SCENARIOS}/prerequisites.xml"/>
     <import file="${ONOS_SCENARIOS}/net-prerequisites.xml"/>
     <import file="${ONOS_SCENARIOS}/setup.xml"/>
+    <import file="${ONOS_SCENARIOS}/maps-cli.xml"/>
     <import file="${ONOS_SCENARIOS}/dist-test.xml"/>
     <import file="${ONOS_SCENARIOS}/smoke-internal.xml"/>
 
     <dependency name="Setup" requires="Prerequisites,Net-Prerequisites"/>
     <dependency name="Net-Smoke" requires="Setup"/>
     <dependency name="Archetypes" requires="Setup"/>
+    <dependency name="Maps-Cli" requires="Setup"/>
     <dependency name="Drivers-Test" requires="Setup"/>
     <dependency name="Meta-App" requires="Setup"/>
     <dependency name="Netcfg" requires="Setup"/>
