diff --git a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java
index 2a7b740..2303f85 100644
--- a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java
+++ b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispChannelHandler.java
@@ -61,7 +61,9 @@
                 LispMapNotify mapNotify =
                         mapServer.processMapRegister((LispMapRegister) msg);
 
-                ctx.writeAndFlush(mapNotify);
+                if (mapNotify != null) {
+                    ctx.writeAndFlush(mapNotify);
+                }
             }
 
             if (msg instanceof LispInfoRequest) {
diff --git a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispMapResolver.java b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispMapResolver.java
index 5661681..285b397 100644
--- a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispMapResolver.java
+++ b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispMapResolver.java
@@ -54,7 +54,7 @@
         LispEncapsulatedControl ecm = (LispEncapsulatedControl) message;
         LispMapRequest request = (LispMapRequest) ecm.getControlMessage();
 
-        // TODO: for now we always generate map-notify message and send to ITR
+        // TODO: for now we always generate map-reply message and send to ITR
         // no matter proxy bit is set or not
 
         // build map-reply message
diff --git a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispMapServer.java b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispMapServer.java
index ffabf79..8c2a7b7 100644
--- a/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispMapServer.java
+++ b/protocols/lisp/ctl/src/main/java/org/onosproject/lisp/ctl/LispMapServer.java
@@ -83,26 +83,32 @@
             return null;
         }
 
-        NotifyBuilder notifyBuilder = new DefaultNotifyBuilder();
-        notifyBuilder.withKeyId(authConfig.lispAuthKeyId());
-        notifyBuilder.withAuthDataLength(valueOf(authConfig.lispAuthKeyId()).getHashLength());
-        notifyBuilder.withAuthKey(authConfig.lispAuthKey());
-        notifyBuilder.withNonce(register.getNonce());
-        notifyBuilder.withMapRecords(register.getMapRecords());
+        // we only acknowledge back to ETR when want-map-notify bit is set to true
+        // otherwise, we do not acknowledge back to ETR
+        if (register.isWantMapNotify()) {
+            NotifyBuilder notifyBuilder = new DefaultNotifyBuilder();
+            notifyBuilder.withKeyId(authConfig.lispAuthKeyId());
+            notifyBuilder.withAuthDataLength(valueOf(authConfig.lispAuthKeyId()).getHashLength());
+            notifyBuilder.withAuthKey(authConfig.lispAuthKey());
+            notifyBuilder.withNonce(register.getNonce());
+            notifyBuilder.withMapRecords(register.getMapRecords());
 
-        LispMapNotify notify = notifyBuilder.build();
+            LispMapNotify notify = notifyBuilder.build();
 
-        InetSocketAddress address =
-                new InetSocketAddress(register.getSender().getAddress(), MAP_NOTIFY_PORT);
-        notify.configSender(address);
+            InetSocketAddress address =
+                    new InetSocketAddress(register.getSender().getAddress(), MAP_NOTIFY_PORT);
+            notify.configSender(address);
 
-        register.getMapRecords().forEach(record -> {
-            LispEidRecord eidRecord =
-                    new LispEidRecord(record.getMaskLength(), record.getEidPrefixAfi());
-            eidRlocMap.insertMapRecord(eidRecord, record);
-        });
+            register.getMapRecords().forEach(record -> {
+                LispEidRecord eidRecord =
+                        new LispEidRecord(record.getMaskLength(), record.getEidPrefixAfi());
+                eidRlocMap.insertMapRecord(eidRecord, record);
+            });
 
-        return notify;
+            return notify;
+        }
+
+        return null;
     }
 
     /**
