diff --git a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
index 9562a73..96abbe9 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/DefaultTrafficTreatment.java
@@ -330,6 +330,7 @@
             return add(Instructions.decMplsTtl());
         }
 
+        @Deprecated
         @Override
         public Builder setLambda(short lambda) {
             return add(Instructions.modL0Lambda(new IndexedLambda(lambda)));
diff --git a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
index 9be4b52..3802bf2 100644
--- a/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
+++ b/core/api/src/main/java/org/onosproject/net/flow/TrafficTreatment.java
@@ -230,7 +230,9 @@
          *
          * @param lambda optical channel ID
          * @return a treatment builder
+         * @deprecated in Drake Release
          */
+        @Deprecated
         Builder setLambda(short lambda);
 
         /**
diff --git a/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficTreatmentTest.java b/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficTreatmentTest.java
index fcf6d9c..288f5f2 100644
--- a/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficTreatmentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/flow/DefaultTrafficTreatmentTest.java
@@ -69,7 +69,7 @@
                 .setEthSrc(MacAddress.BROADCAST)
                 .setIpDst(IpAddress.valueOf("1.1.1.1"))
                 .setIpSrc(IpAddress.valueOf("2.2.2.2"))
-                .setLambda((short) 4)
+                .add(Instructions.modL0Lambda(new IndexedLambda(4)))
                 .setOutput(PortNumber.portNumber(2))
                 .setVlanId(VlanId.vlanId((short) 4))
                 .setVlanPcp((byte) 3);
diff --git a/core/common/src/test/java/org/onosproject/codec/impl/IntentCodecTest.java b/core/common/src/test/java/org/onosproject/codec/impl/IntentCodecTest.java
index 95866bf..cdbd533 100644
--- a/core/common/src/test/java/org/onosproject/codec/impl/IntentCodecTest.java
+++ b/core/common/src/test/java/org/onosproject/codec/impl/IntentCodecTest.java
@@ -32,6 +32,7 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.GridType;
 import org.onosproject.net.HostId;
+import org.onosproject.net.IndexedLambda;
 import org.onosproject.net.Lambda;
 import org.onosproject.net.NetTestTools;
 import org.onosproject.net.OchSignalType;
@@ -41,6 +42,7 @@
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.flow.TrafficTreatment;
 import org.onosproject.net.flow.criteria.Criteria;
+import org.onosproject.net.flow.instructions.Instructions;
 import org.onosproject.net.intent.AbstractIntentTest;
 import org.onosproject.net.intent.Constraint;
 import org.onosproject.net.intent.HostToHostIntent;
@@ -151,7 +153,7 @@
                 .matchIPDst(IpPrefix.valueOf("1.2.3.4/24"))
                 .build();
         final TrafficTreatment treatment = DefaultTrafficTreatment.builder()
-                .setLambda((short) 33)
+                .add(Instructions.modL0Lambda(new IndexedLambda(33)))
                 .setMpls(MplsLabel.mplsLabel(44))
                 .setOutput(PortNumber.CONTROLLER)
                 .setEthDst(MacAddress.BROADCAST)
