diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java
index a78cadb..3c1e643 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowEntryBuilder.java
@@ -38,8 +38,14 @@
 import org.projectfloodlight.openflow.protocol.OFInstructionType;
 import org.projectfloodlight.openflow.protocol.action.OFAction;
 import org.projectfloodlight.openflow.protocol.action.OFActionCircuit;
+import org.projectfloodlight.openflow.protocol.action.OFActionCopyTtlIn;
+import org.projectfloodlight.openflow.protocol.action.OFActionCopyTtlOut;
+import org.projectfloodlight.openflow.protocol.action.OFActionDecMplsTtl;
+import org.projectfloodlight.openflow.protocol.action.OFActionDecNwTtl;
 import org.projectfloodlight.openflow.protocol.action.OFActionExperimenter;
 import org.projectfloodlight.openflow.protocol.action.OFActionOutput;
+import org.projectfloodlight.openflow.protocol.action.OFActionPopMpls;
+import org.projectfloodlight.openflow.protocol.action.OFActionPushMpls;
 import org.projectfloodlight.openflow.protocol.action.OFActionSetDlDst;
 import org.projectfloodlight.openflow.protocol.action.OFActionSetDlSrc;
 import org.projectfloodlight.openflow.protocol.action.OFActionSetField;
@@ -57,6 +63,7 @@
 import org.projectfloodlight.openflow.types.IPv6Address;
 import org.projectfloodlight.openflow.types.Masked;
 import org.projectfloodlight.openflow.types.OFVlanVidMatch;
+import org.projectfloodlight.openflow.types.U32;
 import org.projectfloodlight.openflow.types.VlanPcp;
 import org.slf4j.Logger;
 
@@ -194,12 +201,34 @@
                 OFActionSetField setField = (OFActionSetField) act;
                 handleSetField(builder, setField.getField());
                 break;
+            case POP_MPLS:
+                OFActionPopMpls popMpls = (OFActionPopMpls) act;
+                builder.popMpls((short) popMpls.getEthertype().getValue());
+                break;
+            case PUSH_MPLS:
+                OFActionPushMpls pushMpls = (OFActionPushMpls) act;
+                builder.pushMpls();
+                break;
+            case COPY_TTL_IN:
+                OFActionCopyTtlIn copyTtlIn = (OFActionCopyTtlIn) act;
+                builder.copyTtlIn();
+                break;
+            case COPY_TTL_OUT:
+                OFActionCopyTtlOut copyTtlOut = (OFActionCopyTtlOut) act;
+                builder.copyTtlOut();
+                break;
+            case DEC_MPLS_TTL:
+                OFActionDecMplsTtl decMplsTtl = (OFActionDecMplsTtl) act;
+                builder.decMplsTtl();
+                break;
+            case DEC_NW_TTL:
+                OFActionDecNwTtl decNwTtl = (OFActionDecNwTtl) act;
+                builder.decNwTtl();
+                break;
             case SET_TP_DST:
             case SET_TP_SRC:
-            case POP_MPLS:
             case POP_PBB:
             case POP_VLAN:
-            case PUSH_MPLS:
             case PUSH_PBB:
             case PUSH_VLAN:
             case SET_MPLS_LABEL:
@@ -210,10 +239,6 @@
             case SET_NW_TTL:
             case SET_QUEUE:
             case STRIP_VLAN:
-            case COPY_TTL_IN:
-            case COPY_TTL_OUT:
-            case DEC_MPLS_TTL:
-            case DEC_NW_TTL:
             case ENQUEUE:
 
             case GROUP:
@@ -259,6 +284,11 @@
             OFOxm<IPv4Address> ip4src = (OFOxm<IPv4Address>) oxm;
             builder.setIpSrc(Ip4Address.valueOf(ip4src.getValue().getInt()));
             break;
+        case MPLS_LABEL:
+            @SuppressWarnings("unchecked")
+            OFOxm<U32> labelId = (OFOxm<U32>) oxm;
+            builder.setMpls((int) labelId.getValue().getValue());
+            break;
         case ARP_OP:
         case ARP_SHA:
         case ARP_SPA:
@@ -299,7 +329,6 @@
         case IP_ECN:
         case IP_PROTO:
         case METADATA:
-        case MPLS_LABEL:
         case MPLS_TC:
         case OCH_SIGID:
         case OCH_SIGID_BASIC:
diff --git a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
index 64ebe0d..905cee9 100644
--- a/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
+++ b/providers/openflow/flow/src/main/java/org/onosproject/provider/of/flow/impl/FlowModBuilderVer13.java
@@ -241,8 +241,9 @@
                         (ModMplsLabelInstruction) l2m;
                 oxm = factory().oxms().mplsLabel(U32.of(mplsLabel.label()
                                                                   .longValue()));
-
                 break;
+            case DEC_MPLS_TTL:
+                return factory().actions().decMplsTtl();
             default:
                 log.warn("Unimplemented action type {}.", l2m.subtype());
                 break;
@@ -270,6 +271,12 @@
             ip4 = ip.ip().getIp4Address();
             oxm = factory().oxms().ipv4Src(IPv4Address.of(ip4.toInt()));
             break;
+        case DEC_TTL:
+            return factory().actions().decNwTtl();
+        case TTL_IN:
+            return factory().actions().copyTtlIn();
+        case TTL_OUT:
+            return factory().actions().copyTtlOut();
         default:
             log.warn("Unimplemented action type {}.", l3m.subtype());
             break;
