diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java
index 7811a00..eba2898 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/LambdaConstraint.java
@@ -16,8 +16,8 @@
 package org.onosproject.net.intent.constraint;
 
 import com.google.common.annotations.Beta;
+import org.onosproject.net.IndexedLambda;
 import org.onosproject.net.Link;
-import org.onosproject.net.resource.link.LambdaResource;
 import org.onosproject.net.resource.link.LinkResourceService;
 import org.onosproject.net.resource.ResourceRequest;
 import org.onosproject.net.resource.ResourceType;
@@ -32,14 +32,14 @@
 @Beta
 public class LambdaConstraint extends BooleanConstraint {
 
-    private final LambdaResource lambda;
+    private final IndexedLambda lambda;
 
     /**
      * Creates a new optical lambda constraint.
      *
      * @param lambda optional lambda to indicate a specific lambda
      */
-    public LambdaConstraint(LambdaResource lambda) {
+    public LambdaConstraint(IndexedLambda lambda) {
         this.lambda = lambda;
     }
 
@@ -63,7 +63,7 @@
      *
      * @return required lambda
      */
-    public LambdaResource lambda() {
+    public IndexedLambda lambda() {
         return lambda;
     }
 
diff --git a/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java b/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java
index 88fa7f4..dd371c1 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/LinkCollectionIntentTest.java
@@ -22,11 +22,11 @@
 
 import org.junit.Test;
 import org.onosproject.net.ConnectPoint;
+import org.onosproject.net.IndexedLambda;
 import org.onosproject.net.Link;
 import org.onosproject.net.NetTestTools;
 import org.onosproject.net.flow.TrafficSelector;
 import org.onosproject.net.intent.constraint.LambdaConstraint;
-import org.onosproject.net.resource.link.LambdaResource;
 
 import com.google.common.collect.ImmutableSet;
 import com.google.common.testing.EqualsTester;
@@ -132,7 +132,7 @@
         final LinkedList<Constraint> constraints = new LinkedList<>();
 
         links1.add(link("src", 1, "dst", 2));
-        constraints.add(new LambdaConstraint(LambdaResource.valueOf(23)));
+        constraints.add(new LambdaConstraint(new IndexedLambda(23)));
         final LinkCollectionIntent collectionIntent =
                 LinkCollectionIntent.builder()
                         .appId(APP_ID)
diff --git a/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java b/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java
index 4f86add..d2e9940 100644
--- a/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java
+++ b/core/api/src/test/java/org/onosproject/net/intent/constraint/ConstraintObjectsTest.java
@@ -17,8 +17,8 @@
 
 import org.junit.Test;
 import org.onlab.util.Bandwidth;
+import org.onosproject.net.IndexedLambda;
 import org.onosproject.net.Link;
-import org.onosproject.net.resource.link.LambdaResource;
 
 import com.google.common.testing.EqualsTester;
 
@@ -66,20 +66,20 @@
     // Lambda Constraint
 
     final LambdaConstraint lambdaConstraint1 =
-            new LambdaConstraint(LambdaResource.valueOf(100));
+            new LambdaConstraint(new IndexedLambda(100));
     final LambdaConstraint lambdaConstraintSameAs1 =
-            new LambdaConstraint(LambdaResource.valueOf(100));
+            new LambdaConstraint(new IndexedLambda(100));
     final LambdaConstraint lambdaConstraint2 =
-            new LambdaConstraint(LambdaResource.valueOf(200));
+            new LambdaConstraint(new IndexedLambda(200));
 
     /**
      * Checks that the objects were created properly.
      */
     @Test
     public void testLambdaConstraintCreation() {
-        assertThat(lambdaConstraint1.lambda().toInt(), is(equalTo(100)));
-        assertThat(lambdaConstraintSameAs1.lambda().toInt(), is(equalTo(100)));
-        assertThat(lambdaConstraint2.lambda().toInt(), is(equalTo(200)));
+        assertThat(lambdaConstraint1.lambda().index(), is(equalTo(100L)));
+        assertThat(lambdaConstraintSameAs1.lambda().index(), is(equalTo(100L)));
+        assertThat(lambdaConstraint2.lambda().index(), is(equalTo(200L)));
     }
 
     /**
