diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java
index 72fe8aa..4ccf671 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OFDPA2Pipeline.java
@@ -1030,26 +1030,30 @@
         obj.context().ifPresent(context -> context.onError(obj, error));
     }
 
-
     @Override
     public List<String> getNextMappings(NextGroup nextGroup) {
         List<String> mappings = new ArrayList<>();
         List<Deque<GroupKey>> gkeys = appKryo.deserialize(nextGroup.data());
         for (Deque<GroupKey> gkd : gkeys) {
             Group lastGroup = null;
-            String gchain = "";
+            StringBuffer gchain = new StringBuffer();
             for (GroupKey gk : gkd) {
                 Group g = groupService.getGroup(deviceId, gk);
-                gchain += "  0x" + Integer.toHexString(g.id().id()) + " -->";
+                if (g == null) {
+                    gchain.append("  ERROR").append(" -->");
+                    continue;
+                }
+                gchain.append("  0x").append(Integer.toHexString(g.id().id()))
+                    .append(" -->");
                 lastGroup = g;
             }
             // add port information for last group in group-chain
             for (Instruction i: lastGroup.buckets().buckets().get(0).treatment().allInstructions()) {
                 if (i instanceof OutputInstruction) {
-                    gchain += " port:" + ((OutputInstruction) i).port();
+                    gchain.append(" port:").append(((OutputInstruction) i).port());
                 }
             }
-            mappings.add(gchain);
+            mappings.add(gchain.toString());
         }
         return mappings;
     }
