diff --git a/apps/optical-model/src/main/java/org/onosproject/net/optical/intent/impl/compiler/OpticalPathIntentCompiler.java b/apps/optical-model/src/main/java/org/onosproject/net/optical/intent/impl/compiler/OpticalPathIntentCompiler.java
index 8b17246..614ab90 100644
--- a/apps/optical-model/src/main/java/org/onosproject/net/optical/intent/impl/compiler/OpticalPathIntentCompiler.java
+++ b/apps/optical-model/src/main/java/org/onosproject/net/optical/intent/impl/compiler/OpticalPathIntentCompiler.java
@@ -123,7 +123,7 @@
 
         for (Link link : intent.path().links()) {
             TrafficTreatment.Builder treatmentBuilder = DefaultTrafficTreatment.builder();
-            if (!isTransparent(link.src().deviceId())) {
+            if (!isTransparent(current.deviceId())) {
                 treatmentBuilder.add(Instructions.modL0Lambda(intent.lambda()));
             }
             treatmentBuilder.setOutput(link.src().port());
@@ -136,6 +136,7 @@
                     .fromApp(appId)
                     .makePermanent()
                     .build();
+            selectorBuilder = DefaultTrafficSelector.builder();
 
             if (!isNoFlowRule(current.deviceId())) {
                 rules.add(rule);
@@ -143,7 +144,7 @@
 
             current = link.dst();
             selectorBuilder.matchInPort(link.dst().port());
-            if (!isTransparent(link.dst().deviceId())) {
+            if (!isTransparent(current.deviceId())) {
                 selectorBuilder.add(Criteria.matchLambda(intent.lambda()));
                 selectorBuilder.add(Criteria.matchOchSignalType(intent.signalType()));
             }
@@ -184,7 +185,7 @@
 
         for (Link link : Lists.reverse(intent.path().links())) {
             TrafficTreatment.Builder treatmentBuilder = DefaultTrafficTreatment.builder();
-            if (isTransparent(link.dst().deviceId())) {
+            if (!isTransparent(current.deviceId())) {
                 treatmentBuilder.add(Instructions.modL0Lambda(intent.lambda()));
             }
             treatmentBuilder.setOutput(link.dst().port());
@@ -197,6 +198,7 @@
                     .fromApp(appId)
                     .makePermanent()
                     .build();
+            selectorBuilder = DefaultTrafficSelector.builder();
 
             if (!isNoFlowRule(current.deviceId())) {
                 rules.add(rule);
@@ -204,7 +206,7 @@
 
             current = link.src();
             selectorBuilder.matchInPort(link.src().port());
-            if (isTransparent(link.src().deviceId())) {
+            if (!isTransparent(current.deviceId())) {
                 selectorBuilder.add(Criteria.matchLambda(intent.lambda()));
                 selectorBuilder.add(Criteria.matchOchSignalType(intent.signalType()));
             }
