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;
     }
 
     /**
