diff --git a/cli/src/main/java/org/onosproject/cli/app/ApplicationsListCommand.java b/cli/src/main/java/org/onosproject/cli/app/ApplicationsListCommand.java
index d9debdb..5766c57 100644
--- a/cli/src/main/java/org/onosproject/cli/app/ApplicationsListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/app/ApplicationsListCommand.java
@@ -42,6 +42,13 @@
             "%s id=%d, name=%s, version=%s, origin=%s, description=%s, " +
                     "features=%s, featuresRepo=%s, permissions=%s";
 
+    private static final String SHORT_FMT =
+            "%s %3d  %-28s  %-8s  %-16s  %s";
+
+    @Option(name = "-s", aliases = "--short", description = "Show short output only",
+            required = false, multiValued = false)
+    private boolean shortOnly = false;
+
     @Option(name = "-a", aliases = "--active", description = "Show active only",
             required = false, multiValued = false)
     private boolean activeOnly = false;
@@ -59,11 +66,17 @@
             for (Application app : apps) {
                 boolean isActive = service.getState(app.id()) == ACTIVE;
                 if (activeOnly && isActive || !activeOnly) {
-                    print(FMT, isActive ? "*" : " ",
-                          app.id().id(), app.id().name(), app.version(), app.origin(),
-                          app.description(), app.features(),
-                          app.featuresRepo().isPresent() ? app.featuresRepo().get().toString() : "",
-                          app.permissions());
+                    if (shortOnly) {
+                        print(SHORT_FMT, isActive ? "*" : " ",
+                              app.id().id(), app.id().name(), app.version(),
+                              app.origin(), app.description());
+                    } else {
+                        print(FMT, isActive ? "*" : " ",
+                              app.id().id(), app.id().name(), app.version(), app.origin(),
+                              app.description(), app.features(),
+                              app.featuresRepo().isPresent() ? app.featuresRepo().get().toString() : "",
+                              app.permissions());
+                    }
                 }
             }
         }
diff --git a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
index 910f7b1..de73c91 100644
--- a/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/cfg/ComponentConfigCommand.java
@@ -17,10 +17,12 @@
 
 import org.apache.karaf.shell.commands.Argument;
 import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.commands.Option;
 import org.onosproject.cfg.ComponentConfigService;
 import org.onosproject.cfg.ConfigProperty;
 import org.onosproject.cli.AbstractShellCommand;
 
+import java.util.Optional;
 import java.util.Set;
 
 import static com.google.common.base.Strings.isNullOrEmpty;
@@ -36,6 +38,12 @@
     static final String SET = "set";
 
     private static final String FMT = "    name=%s, type=%s, value=%s, defaultValue=%s, description=%s";
+    private static final String SHORT_FMT = "    %s=%s";
+
+    @Option(name = "-s", aliases = "--short", description = "Show short output only",
+            required = false, multiValued = false)
+    private boolean shortOnly = false;
+
 
     @Argument(index = 0, name = "command",
             description = "Command name (activate|deactivate|uninstall)",
@@ -87,12 +95,29 @@
     private void listComponentProperties(String component) {
         Set<ConfigProperty> props = service.getProperties(component);
         print("%s", component);
-        props.forEach(p -> print(FMT, p.name(), p.type().toString().toLowerCase(),
-                                 p.value(), p.defaultValue(), p.description()));
+        if (shortOnly) {
+            props.forEach(p -> print(SHORT_FMT, p.name(), p.value()));
+        } else {
+            props.forEach(p -> print(FMT, p.name(), p.type().toString().toLowerCase(),
+                                     p.value(), p.defaultValue(), p.description()));
+        }
     }
 
     private void listComponentProperty(String component, String name) {
-        // FIXME: implement after getProperty is defined and implemented
+        Set<ConfigProperty> props = service.getProperties(component);
+        Optional<ConfigProperty> property = props.stream()
+                .filter(p -> p.name().equals(name)).findFirst();
+        if (!property.isPresent()) {
+            System.err.println("Property " + name + " for component " + component + " not found");
+            return;
+        }
+        ConfigProperty p = property.get();
+        if (shortOnly) {
+            print(SHORT_FMT, p.name(), p.value());
+        } else {
+            print(FMT, p.name(), p.type().toString().toLowerCase(), p.value(),
+                  p.defaultValue(), p.description());
+        }
     }
 
 }
