diff --git a/cli/src/main/java/org/onosproject/cli/net/PartitionsSnapshotCommand.java b/cli/src/main/java/org/onosproject/cli/net/PartitionsSnapshotCommand.java
new file mode 100644
index 0000000..02ecab3
--- /dev/null
+++ b/cli/src/main/java/org/onosproject/cli/net/PartitionsSnapshotCommand.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2015-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.cli.net;
+
+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.cluster.PartitionId;
+import org.onosproject.store.primitives.PartitionAdminService;
+
+/**
+ * Command to force a snapshot of the partitions.
+ */
+@Service
+@Command(scope = "onos", name = "snapshot-partitions",
+    description = "Force snapshot partitions")
+public class PartitionsSnapshotCommand extends AbstractShellCommand {
+
+    @Option(name = "-p", aliases = "--partition",
+        description = "The partition to snapshot",
+        required = false, multiValued = false)
+    private Integer partitionId;
+
+    @Override
+    protected void doExecute() {
+        PartitionAdminService partitionAdminService = get(PartitionAdminService.class);
+        if (partitionId != null) {
+            partitionAdminService.snapshot(PartitionId.from(partitionId));
+        } else {
+            partitionAdminService.snapshot();
+        }
+    }
+}
diff --git a/core/api/src/main/java/org/onosproject/store/primitives/PartitionAdminService.java b/core/api/src/main/java/org/onosproject/store/primitives/PartitionAdminService.java
index 3602930..d54dcf0 100644
--- a/core/api/src/main/java/org/onosproject/store/primitives/PartitionAdminService.java
+++ b/core/api/src/main/java/org/onosproject/store/primitives/PartitionAdminService.java
@@ -17,6 +17,7 @@
 
 import java.util.List;
 
+import org.onosproject.cluster.PartitionId;
 import org.onosproject.store.service.PartitionClientInfo;
 import org.onosproject.store.service.PartitionInfo;
 
@@ -36,4 +37,16 @@
      * @return list of {@code PartitionClientInfo}
      */
     List<PartitionClientInfo> partitionClientInfo();
+
+    /**
+     * Takes a snapshot of all partitions.
+     */
+    void snapshot();
+
+    /**
+     * Takes a snapshot of the given partition.
+     *
+     * @param partitionId the partition to snapshot
+     */
+    void snapshot(PartitionId partitionId);
 }
\ No newline at end of file
diff --git a/core/store/primitives/src/main/java/org/onosproject/store/atomix/primitives/impl/PartitionManager.java b/core/store/primitives/src/main/java/org/onosproject/store/atomix/primitives/impl/PartitionManager.java
index 0e6c11c..c6a2e75 100644
--- a/core/store/primitives/src/main/java/org/onosproject/store/atomix/primitives/impl/PartitionManager.java
+++ b/core/store/primitives/src/main/java/org/onosproject/store/atomix/primitives/impl/PartitionManager.java
@@ -124,4 +124,23 @@
                     .collect(Collectors.toList())))
             .collect(Collectors.toList());
     }
+
+    @Override
+    public void snapshot() {
+        checkPermission(PARTITION_READ);
+        if (partitionGroup != null) {
+            partitionGroup.snapshot().join();
+        }
+    }
+
+    @Override
+    public void snapshot(PartitionId partitionId) {
+        checkPermission(PARTITION_READ);
+        io.atomix.primitive.partition.PartitionId atomixPartitionId =
+                io.atomix.primitive.partition.PartitionId.from(partitionGroup.name(), partitionId.id());
+        if (partitionGroup != null &&
+                partitionGroup.getPartition(atomixPartitionId) != null) {
+            partitionGroup.snapshot(atomixPartitionId).join();
+        }
+    }
 }
