diff --git a/protos/voltha_protos/adapter_service.proto b/protos/voltha_protos/adapter_service.proto
index 08578a4..31891ce 100755
--- a/protos/voltha_protos/adapter_service.proto
+++ b/protos/voltha_protos/adapter_service.proto
@@ -85,4 +85,8 @@
     rpc SetExtValue(core_adapter.SetExtValueMessage) returns (google.protobuf.Empty);
     rpc GetSingleValue(extension.SingleGetValueRequest) returns (extension.SingleGetValueResponse);
     rpc SetSingleValue(extension.SingleSetValueRequest) returns (extension.SingleSetValueResponse);
+    rpc DisableOnuDevice (device.Device) returns(google.protobuf.Empty);
+    rpc EnableOnuDevice (device.Device) returns(google.protobuf.Empty);
+    rpc DisableOnuSerialNumber(device.OnuSerialNumberOnOLTPon) returns (google.protobuf.Empty);
+    rpc EnableOnuSerialNumber(device.OnuSerialNumberOnOLTPon) returns (google.protobuf.Empty);
 }
diff --git a/protos/voltha_protos/common.proto b/protos/voltha_protos/common.proto
index d2fe18b..936cd30 100755
--- a/protos/voltha_protos/common.proto
+++ b/protos/voltha_protos/common.proto
@@ -186,4 +186,4 @@
     fixed64 bip_errors = 15;
     fixed64 bip_units = 61;
     fixed32 timestamp = 16;
-}
\ No newline at end of file
+}
diff --git a/protos/voltha_protos/device.proto b/protos/voltha_protos/device.proto
index 7add29a..7345074 100755
--- a/protos/voltha_protos/device.proto
+++ b/protos/voltha_protos/device.proto
@@ -493,3 +493,11 @@
     string onu_serial_number = 9;
     OperationType operation = 10;
 }
+
+// Represents a serialNumber of a  child device on a olt pon port
+message OnuSerialNumberOnOLTPon {
+    common.ID    olt_device_id = 1;
+    device.Port   port = 2;
+    string serial_number = 3;
+}
+
diff --git a/protos/voltha_protos/openolt.proto b/protos/voltha_protos/openolt.proto
index 67a09f9..bc47791 100755
--- a/protos/voltha_protos/openolt.proto
+++ b/protos/voltha_protos/openolt.proto
@@ -288,6 +288,52 @@
           body: "*"
         };
     }
+
+
+    /*
+     * Disable ONU serailnumber, disable device at PLOAM.
+     * Takes input as intfid, onuid, sn of the ONU.
+     * Returns success if the call towards the device is success, error otherwise.
+     */
+    rpc DisableOnu (InterfaceOnuSerialNumberOnuId) returns (Empty) {
+       option (google.api.http) = {
+         post: "/v1/DisableOnu"
+       };
+    }
+
+    /*
+     * Enables ONU serailnumber, enable device at PLOAM.
+     * Takes input as intfid, onuid, sn of the ONU.
+     * Returns success if the call towards the device is success, error otherwise.
+     */
+    rpc EnableOnu (InterfaceOnuSerialNumberOnuId) returns (Empty) {
+       option (google.api.http) = {
+         post: "/v1/EnableOnu"
+       };
+    }
+
+
+    /*
+     * Disable ONU serailnumber, disable device at PLOAM
+     * Takes input as intfid and sn of the ONU. Generally used when the onu is not present in the OLT.
+     * Returns success if the call towards the device is success, error otherwise.
+     */
+    rpc DisableOnuSerialNumber(InterfaceOnuSerialNumber) returns (Empty) {
+       option (google.api.http) = {
+         post: "/v1/DisableOnuSerialNumber"
+       };
+    }
+
+    /* 
+     * Enables ONU serailnumber, enable device at PLOAM
+     * Takes input as intfid and sn of the ONU. Generally used when the onu is not present in the OLT.
+     * Returns success if the call towards the device is success, error otherwise.
+     */
+    rpc EnableOnuSerialNumber(InterfaceOnuSerialNumber) returns (Empty) {
+       option (google.api.http) = {
+         post: "/v1/EnableOnuSerialNumber"
+       };
+    }
 }
 
 message Indication {
@@ -302,6 +348,8 @@
         common.PortStatistics port_stats = 8;
         FlowStatistics flow_stats = 9;
         AlarmIndication alarm_ind= 10;
+        OnuDisabledIndication  onu_disabled_ind = 11;
+        OnuEnabledIndication   onu_enabled_ind = 12;
     }
 }
 
@@ -363,6 +411,19 @@
 
 }
 
+message OnuDisabledIndication {
+    fixed32 intf_id = 1;
+    fixed32 onu_id = 2;
+    SerialNumber serial_number = 4;
+}
+
+message OnuEnabledIndication {
+    fixed32 intf_id = 1;
+    fixed32 onu_id = 2;
+    SerialNumber serial_number = 4;
+}
+
+
 message IntfOperIndication {
     string type = 1;		// nni, pon
     fixed32 intf_id = 2;
@@ -864,4 +925,16 @@
     AlarmState   los = 4;
 }
 
+/*
+ * Message used for disabling device by serialnumber, disable at PLOAM
+ */
+message InterfaceOnuSerialNumberOnuId {
+    InterfaceOnuSerialNumber intf_id_serial_num = 1;
+    fixed32          onu_id = 2;
+}
+
+message InterfaceOnuSerialNumber {
+    fixed32          intf_id = 1;
+    SerialNumber     onu_serial_number = 2;
+}
 message Empty {}
diff --git a/protos/voltha_protos/voltha.proto b/protos/voltha_protos/voltha.proto
index be9ff96..9d9abeb 100755
--- a/protos/voltha_protos/voltha.proto
+++ b/protos/voltha_protos/voltha.proto
@@ -608,5 +608,35 @@
             delete: "/api/v1/voip_user_profile/{key}/delete"
         };
     }
+
+    // Disables the ONU, stops it from participating in the ranging process. different from DisableDevice
+    rpc DisableOnuDevice (common.ID) returns(google.protobuf.Empty) {
+        option (google.api.http) = {
+            post: "/api/v1/disable_onu_device"
+        };
+    }
+
+    // Enables the ONU at the PLOAM , enables the ONU to participate in the ranging process. different from EnableDevice
+    rpc EnableOnuDevice (common.ID) returns(google.protobuf.Empty) {
+        option (google.api.http) = {
+            post: "/api/v1/enable_onu_device"
+        };
+    }
+
+    
+    // Disables the ONU at the PLOAM , different from DisableDevice. This would be used if the Device is not present in the VOLTHA
+    rpc DisableOnuSerialNumber(device.OnuSerialNumberOnOLTPon) returns(google.protobuf.Empty) {
+        option (google.api.http) = {
+            post: "/api/v1/disable_onu_serial_number"
+        };
+    }
+
+    // Disables the ONU at the PLOAM , different from EnableDevice. This would be used if the Device is not present in the VOLTHA
+    rpc EnableOnuSerialNumber(device.OnuSerialNumberOnOLTPon) returns(google.protobuf.Empty) {
+        option (google.api.http) = {
+            post: "/api/v1/enable_onu_serial_number"
+        };
+    }
+
 }
 
