diff --git a/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java b/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
index 8bc0bc4..d22f147 100644
--- a/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
+++ b/cli/src/main/java/org/onosproject/cli/net/ConnectivityIntentCommand.java
@@ -24,6 +24,7 @@
 import org.apache.karaf.shell.commands.Option;
 import org.onlab.packet.Ip6Address;
 import org.onlab.packet.IpAddress;
+import org.onlab.packet.VlanId;
 import org.onlab.util.Bandwidth;
 import org.onosproject.cli.AbstractShellCommand;
 import org.onosproject.core.ApplicationId;
@@ -61,6 +62,10 @@
             required = false, multiValued = false)
     private String ethTypeString = null;
 
+    @Option(name = "-v", aliases = "--vlan", description = "VLAN ID",
+            required = false, multiValued = false)
+    private String vlanString = null;
+
     @Option(name = "--ipProto", description = "IP Protocol",
             required = false, multiValued = false)
     private String ipProtoString = null;
@@ -143,6 +148,17 @@
             required = false, multiValued = false)
     private String setIpDstString = null;
 
+    @Option(name = "--setVlan", description = "Rewrite VLAN ID",
+            required = false, multiValued = false)
+    private String setVlan = null;
+
+    @Option(name = "--popVlan", description = "Pop VLAN Tag",
+            required = false, multiValued = false)
+    private boolean popVlan = false;
+
+    @Option(name = "--pushVlan", description = "Push VLAN ID",
+            required = false, multiValued = false)
+    private String pushVlan = null;
 
     // Priorities
     @Option(name = "-p", aliases = "--priority", description = "Priority",
@@ -202,6 +218,9 @@
         if (ethType != null) {
             selectorBuilder.matchEthType(ethType);
         }
+        if (!isNullOrEmpty(vlanString)) {
+            selectorBuilder.matchVlanId(VlanId.vlanId(Short.parseShort(vlanString)));
+        }
         if (!isNullOrEmpty(srcMacString)) {
             selectorBuilder.matchEthSrc(MacAddress.valueOf(srcMacString));
         }
@@ -289,6 +308,19 @@
             treatmentBuilder.setIpSrc(IpAddress.valueOf(setIpDstString));
             emptyTreatment = false;
         }
+        if (!isNullOrEmpty(setVlan)) {
+            treatmentBuilder.setVlanId(VlanId.vlanId(Short.parseShort(setVlan)));
+            emptyTreatment = false;
+        }
+        if (popVlan) {
+            treatmentBuilder.popVlan();
+            emptyTreatment = false;
+        }
+        if (!isNullOrEmpty(pushVlan)) {
+            treatmentBuilder.pushVlan();
+            treatmentBuilder.setVlanId(VlanId.vlanId(Short.parseShort(pushVlan)));
+            emptyTreatment = false;
+        }
 
         if (emptyTreatment) {
             return DefaultTrafficTreatment.emptyTreatment();
diff --git a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java
index c133483..eac46cc 100644
--- a/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java
+++ b/core/net/src/main/java/org/onosproject/net/intent/impl/compiler/MplsPathIntentCompiler.java
@@ -16,12 +16,14 @@
 package org.onosproject.net.intent.impl.compiler;
 
 import com.google.common.collect.Sets;
+
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
 import org.apache.felix.scr.annotations.Deactivate;
 import org.apache.felix.scr.annotations.Reference;
 import org.apache.felix.scr.annotations.ReferenceCardinality;
 import org.onlab.packet.Ethernet;
+import org.onlab.packet.VlanId;
 import org.onosproject.core.ApplicationId;
 import org.onosproject.core.CoreService;
 import org.onosproject.net.ConnectPoint;
@@ -36,6 +38,8 @@
 import org.onosproject.net.flow.TrafficTreatment;
 import org.onosproject.net.flow.criteria.Criterion;
 import org.onosproject.net.flow.criteria.EthTypeCriterion;
+import org.onosproject.net.flow.instructions.Instruction;
+import org.onosproject.net.flow.instructions.L2ModificationInstruction;
 import org.onosproject.net.intent.FlowRuleIntent;
 import org.onosproject.net.intent.Intent;
 import org.onosproject.net.intent.IntentCompiler;
@@ -235,6 +239,21 @@
         TrafficTreatment.Builder treat = DefaultTrafficTreatment.builder(intent
                 .treatment());
 
+        // check if the treatement is popVlan or setVlan (rewrite),
+        // than selector needs to match any VlanId
+        for (Instruction instruct : intent.treatment().allInstructions()) {
+            if (instruct instanceof L2ModificationInstruction) {
+                L2ModificationInstruction l2Mod = (L2ModificationInstruction) instruct;
+                if (l2Mod.subtype() == L2ModificationInstruction.L2SubType.VLAN_PUSH) {
+                    break;
+                }
+                if (l2Mod.subtype() == L2ModificationInstruction.L2SubType.VLAN_POP ||
+                        l2Mod.subtype() == L2ModificationInstruction.L2SubType.VLAN_ID) {
+                    selector.matchVlanId(VlanId.ANY);
+                }
+            }
+        }
+
         if (intent.egressLabel().isPresent()) {
             treat.setMpls(intent.egressLabel().get());
         } else {
