diff --git a/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarms.java b/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarms.java
index a44dc1e..49456da 100644
--- a/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarms.java
+++ b/apps/faultmanagement/fmcli/src/main/java/org/onosproject/faultmanagement/alarms/cli/GetAllAlarms.java
@@ -15,27 +15,55 @@
  */
 package org.onosproject.faultmanagement.alarms.cli;
 
-import java.util.Set;
 import org.apache.commons.lang3.builder.ToStringBuilder;
 import org.apache.commons.lang3.builder.ToStringStyle;
+import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Option;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.incubator.net.faultmanagement.alarm.Alarm;
 import org.onosproject.incubator.net.faultmanagement.alarm.AlarmService;
+import org.onosproject.net.DeviceId;
+
+import java.util.Set;
 
 /**
  * Lists alarms across all devices.
  */
-@Command(scope = "onos", name = "alarm-list",
-        description = "Lists active alarms across all devices.")
+@Command(scope = "onos", name = "alarms",
+        description = "Lists alarms")
 public class GetAllAlarms extends AbstractShellCommand {
 
+    @Option(name = "-a", aliases = "--active", description = "Shows ACTIVE alarms only",
+            required = false, multiValued = false)
+    private boolean activeOnly = false;
+
+    @Argument(index = 0, name = "deviceId", description = "Device identity",
+            required = false, multiValued = false)
+    String deviceId = null;
+
+    private AlarmService alarmService = AbstractShellCommand.get(AlarmService.class);
+    private Set<Alarm> alarms;
+
     @Override
     protected void execute() {
-        printAlarms(AbstractShellCommand.get(AlarmService.class).getAlarms());
+        if (deviceId != null) {
+            if (activeOnly) {
+                alarms = alarmService.getActiveAlarms(DeviceId.deviceId(deviceId));
+            } else {
+                alarms = alarmService.getAlarms(DeviceId.deviceId(deviceId));
+            }
+        } else if (activeOnly) {
+            alarms = alarmService.getActiveAlarms();
+        } else {
+            alarms = alarmService.getAlarms();
+        }
+        printAlarms(alarms);
     }
 
+
     void printAlarms(Set<Alarm> alarms) {
+        //FIXME this can be better formatted
         alarms.forEach((alarm) -> {
             print(ToStringBuilder.reflectionToString(alarm, ToStringStyle.SHORT_PREFIX_STYLE));
         });
