diff --git a/pipelines/fabric/impl/BUILD b/pipelines/fabric/impl/BUILD
index 17748ec..eb68a20 100644
--- a/pipelines/fabric/impl/BUILD
+++ b/pipelines/fabric/impl/BUILD
@@ -1,4 +1,4 @@
-COMPILE_DEPS = CORE_DEPS + KRYO + [
+COMPILE_DEPS = CORE_DEPS + KRYO + CLI + [
     "//pipelines/fabric/api:onos-pipelines-fabric-api",
     "//protocols/p4runtime/model:onos-protocols-p4runtime-model",
     "//protocols/p4runtime/api:onos-protocols-p4runtime-api",
@@ -14,6 +14,7 @@
 ]
 
 osgi_jar_with_tests(
+    karaf_command_packages = ["org.onosproject.pipelines.fabric.impl.behaviour.cli"],
     test_deps = TEST_DEPS,
     deps = COMPILE_DEPS,
 )
diff --git a/pipelines/fabric/impl/src/main/java/org/onosproject/pipelines/fabric/impl/behaviour/cli/ReadInternalUpfStoreCommand.java b/pipelines/fabric/impl/src/main/java/org/onosproject/pipelines/fabric/impl/behaviour/cli/ReadInternalUpfStoreCommand.java
new file mode 100644
index 0000000..af3a297
--- /dev/null
+++ b/pipelines/fabric/impl/src/main/java/org/onosproject/pipelines/fabric/impl/behaviour/cli/ReadInternalUpfStoreCommand.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright 2021-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.
+ */
+
+package org.onosproject.pipelines.fabric.impl.behaviour.cli;
+
+import org.apache.karaf.shell.api.action.Command;
+import org.apache.karaf.shell.api.action.Option;
+import org.apache.karaf.shell.api.action.lifecycle.Service;
+import org.onosproject.cli.AbstractShellCommand;
+import org.onosproject.pipelines.fabric.impl.behaviour.upf.FabricUpfStore;
+import org.onosproject.pipelines.fabric.impl.behaviour.upf.UpfRuleIdentifier;
+
+import java.util.Map;
+
+/**
+ * Read internal UPF store of fabric.
+ */
+@Service
+@Command(scope = "fabric", name = "upf-read-internal-store",
+        description = "Print internal UPF stores")
+public class ReadInternalUpfStoreCommand extends AbstractShellCommand {
+    @Option(name = "-v", aliases = "--verbose",
+            description = "Print more detail of each entry",
+            required = false, multiValued = false)
+    private boolean verbose = false;
+
+    @Override
+    protected void doExecute() {
+        FabricUpfStore upfStore = get(FabricUpfStore.class);
+
+        if (upfStore == null) {
+            print("Error: FabricUpfStore is null");
+            return;
+        }
+
+        Map<UpfRuleIdentifier, Integer> farIdMap = upfStore.getFarIdMap();
+        print("farIdMap size: " + farIdMap.size());
+        if (verbose) {
+            farIdMap.entrySet().forEach(entry -> print(entry.toString()));
+        }
+    }
+}
\ No newline at end of file
diff --git a/pipelines/fabric/impl/src/main/java/org/onosproject/pipelines/fabric/impl/behaviour/cli/package-info.java b/pipelines/fabric/impl/src/main/java/org/onosproject/pipelines/fabric/impl/behaviour/cli/package-info.java
new file mode 100644
index 0000000..f78dd7a
--- /dev/null
+++ b/pipelines/fabric/impl/src/main/java/org/onosproject/pipelines/fabric/impl/behaviour/cli/package-info.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2021-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.
+ */
+
+/**
+ * CLI commands for fabric UPF.
+ */
+package org.onosproject.pipelines.fabric.impl.behaviour.cli;
