diff --git a/cli/src/main/java/org/onosproject/cli/ScrListCommand.java b/cli/src/main/java/org/onosproject/cli/ScrListCommand.java
index 2de0c8e..113b271 100644
--- a/cli/src/main/java/org/onosproject/cli/ScrListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/ScrListCommand.java
@@ -38,25 +38,32 @@
 
         scrService.getComponentDescriptionDTOs()
             .forEach(componentDto -> {
-                scrService.getComponentConfigurationDTOs(componentDto)
-                    .forEach(configurationDto -> {
-                        String state;
-                        switch (configurationDto.state) {
-                            case ComponentConfigurationDTO.ACTIVE: {
-                                state = "ACTIVE";
-                                break;
+                try {
+                    scrService.getComponentConfigurationDTOs(componentDto)
+                        .forEach(configurationDto -> {
+                            String state;
+                            switch (configurationDto.state) {
+                                case ComponentConfigurationDTO.ACTIVE: {
+                                    state = "ACTIVE";
+                                    break;
+                                }
+                                case ComponentConfigurationDTO.SATISFIED: {
+                                    state = "SATISFIED";
+                                    break;
+                                }
+                                default: {
+                                    state = "UNKNOWN";
+                                }
                             }
-                            case ComponentConfigurationDTO.SATISFIED: {
-                                state = "SATISFIED";
-                                break;
-                            }
-                            default: {
-                                state = "UNKNOWN";
-                            }
-                        }
-                        formatter.format("%3d | %9s | %s\n", configurationDto.id, state, componentDto.name);
-                    });
-                });
+                            formatter.format("%3d | %9s | %s\n", configurationDto.id, state, componentDto.name);
+                        });
+                } catch (NullPointerException npe) {
+                    // Work around for a race condition inside of the SCR runtime.
+                    // In certain conditions, the SCR code gets an NPE due to a
+                    // null bundle pointer
+                    // Nothing we can do with the data, skip this entry
+                }
+            });
         print(output.toString());
     }
 
