diff --git a/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java b/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java
index 55b9ec9..3bed89b 100644
--- a/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/IntentsListCommand.java
@@ -27,6 +27,8 @@
 import org.onosproject.net.intent.IntentState;
 import org.onosproject.net.intent.LinkCollectionIntent;
 import org.onosproject.net.intent.MultiPointToSinglePointIntent;
+import org.onosproject.net.intent.OpticalCircuitIntent;
+import org.onosproject.net.intent.OpticalConnectivityIntent;
 import org.onosproject.net.intent.PathIntent;
 import org.onosproject.net.intent.PointToPointIntent;
 import org.onosproject.net.intent.SinglePointToMultiPointIntent;
@@ -114,6 +116,8 @@
         private IntentSummary summarySinglePointToMultiPoint;
         private IntentSummary summaryPath;
         private IntentSummary summaryLinkCollection;
+        private IntentSummary summaryOpticalCircuit;
+        private IntentSummary summaryOpticalConnectivity;
         private IntentSummary summaryUnknownType;
 
         /**
@@ -130,6 +134,8 @@
                 new IntentSummary("SinglePointToMultiPoint");
             summaryPath = new IntentSummary("Path");
             summaryLinkCollection = new IntentSummary("LinkCollection");
+            summaryOpticalCircuit = new IntentSummary("OpticalCircuit");
+            summaryOpticalConnectivity = new IntentSummary("OpticalConnectivity");
             summaryUnknownType = new IntentSummary("UnknownType");
         }
 
@@ -182,7 +188,14 @@
                     summaryLinkCollection.update(intentState);
                     continue;
                 }
-
+                if (intent instanceof OpticalCircuitIntent) {
+                    summaryOpticalCircuit.update(intentState);
+                    continue;
+                }
+                if (intent instanceof OpticalConnectivityIntent) {
+                    summaryOpticalConnectivity.update(intentState);
+                    continue;
+                }
                 summaryUnknownType.update(intentState);
             }
         }
@@ -204,6 +217,8 @@
                        summarySinglePointToMultiPoint.json(mapper));
             result.set("path", summaryPath.json(mapper));
             result.set("linkCollection", summaryLinkCollection.json(mapper));
+            result.set("opticalCircuit", summaryOpticalCircuit.json(mapper));
+            result.set("opticalConnectivity", summaryOpticalConnectivity.json(mapper));
             result.set("unknownType", summaryUnknownType.json(mapper));
             result.set("all", summaryAll.json(mapper));
             return result;
@@ -220,6 +235,8 @@
             summarySinglePointToMultiPoint.printState();
             summaryPath.printState();
             summaryLinkCollection.printState();
+            summaryOpticalCircuit.printState();
+            summaryOpticalConnectivity.printState();
             summaryUnknownType.printState();
             summaryAll.printState();
         }
@@ -378,6 +395,12 @@
             LinkCollectionIntent li = (LinkCollectionIntent) intent;
             print("    links=%s", li.links());
             print("    egress=%s", li.egressPoints());
+        } else if (intent instanceof OpticalCircuitIntent) {
+            OpticalCircuitIntent ci = (OpticalCircuitIntent) intent;
+            print("    src=%s, dst=%s", ci.getSrc(), ci.getDst());
+        } else if (intent instanceof OpticalConnectivityIntent) {
+            OpticalConnectivityIntent ci = (OpticalConnectivityIntent) intent;
+            print("    src=%s, dst=%s", ci.getSrc(), ci.getDst());
         }
 
         List<Intent> installable = service.getInstallableIntents(intent.key());
