diff --git a/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumFlowRuleDriver.java b/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumFlowRuleDriver.java
index 9534388..e8a2d50 100644
--- a/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumFlowRuleDriver.java
+++ b/drivers/lumentum/src/main/java/org/onosproject/drivers/lumentum/LumentumFlowRuleDriver.java
@@ -70,10 +70,13 @@
     private static final int DEFAULT_CHANNEL_TARGET_POWER = -30;
     private static final int DISABLE_CHANNEL_ABSOLUTE_ATTENUATION = 160;
     private static final int DEFAULT_CHANNEL_ABSOLUTE_ATTENUATION = 50;
+    private static final int DISABLE_CHANNEL_ADD_DROP_PORT_INDEX = 1;
     private static final int OUT_OF_SERVICE = 1;
     private static final int IN_SERVICE = 2;
     private static final int OPEN_LOOP = 1;
     private static final int CLOSED_LOOP = 2;
+    // First 20 ports are add/mux ports, next 20 are drop/demux
+    private static final int DROP_PORT_OFFSET = 20;
 
     // OIDs
     private static final String CTRL_AMP_MODULE_SERVICE_STATE_PREAMP = ".1.3.6.1.4.1.46184.1.4.4.1.2.1";
@@ -194,6 +197,9 @@
 
         int channel = toChannel(xc.ochSignal());
         long addDrop = xc.addDrop().toLong();
+        if (!xc.isAddRule()) {
+            addDrop -= DROP_PORT_OFFSET;
+        }
 
         // Create the PDU object
         PDU pdu = new PDU();
@@ -265,7 +271,8 @@
         // Put cross connect back into default port 1
         OID ctrlChannelAddDropPortIndex = new OID(CTRL_CHANNEL_ADD_DROP_PORT_INDEX +
                 (xc.isAddRule() ? "1." : "2.") + channel);
-        pdu.add(new VariableBinding(ctrlChannelAddDropPortIndex, new UnsignedInteger32(OUT_OF_SERVICE)));
+        pdu.add(new VariableBinding(ctrlChannelAddDropPortIndex,
+                new UnsignedInteger32(DISABLE_CHANNEL_ADD_DROP_PORT_INDEX)));
 
         // Put port/channel back to open loop
         OID ctrlChannelMode = new OID(CTRL_CHANNEL_MODE + (xc.isAddRule() ? "1." : "2.") + channel);
@@ -336,6 +343,9 @@
             for (VariableBinding varBinding : varBindings) {
                 if (varBinding.getOid().last() == channel) {
                     int port = varBinding.getVariable().toInt();
+                    if (!isAddPort) {
+                        port += DROP_PORT_OFFSET;
+                    }
                     return PortNumber.portNumber(port);
 
                 }
