diff --git a/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingProviderService.java b/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingProviderService.java
index 724f493..c5bcb80 100644
--- a/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingProviderService.java
+++ b/apps/mappingmanagement/api/src/main/java/org/onosproject/mapping/MappingProviderService.java
@@ -17,6 +17,8 @@
 
 import org.onosproject.net.provider.ProviderService;
 
+import java.util.List;
+
 /**
  * Service through which mapping providers can inject mapping information into
  * the core.
@@ -39,4 +41,13 @@
      * @return a mapping value associated with a given mapping key
      */
     MappingValue mappingQueried(MappingKey mappingKey);
+
+    /**
+     * Signals that a new batch mapping query has been issued.
+     * If no mapping is found, simply returns empty list.
+     *
+     * @param mappingKeys a collection of mapping keys
+     * @return a collection of mapping values associated with give mapping keys
+     */
+    List<MappingValue> mappingQueried(List<MappingKey> mappingKeys);
 }
diff --git a/apps/mappingmanagement/api/src/test/java/org/onosproject/mapping/MappingProviderServiceAdapter.java b/apps/mappingmanagement/api/src/test/java/org/onosproject/mapping/MappingProviderServiceAdapter.java
index a5e35af..c047772 100644
--- a/apps/mappingmanagement/api/src/test/java/org/onosproject/mapping/MappingProviderServiceAdapter.java
+++ b/apps/mappingmanagement/api/src/test/java/org/onosproject/mapping/MappingProviderServiceAdapter.java
@@ -15,6 +15,8 @@
  */
 package org.onosproject.mapping;
 
+import java.util.List;
+
 /**
  * Adapter for testing against mapping provider service.
  */
@@ -33,4 +35,9 @@
     public MappingValue mappingQueried(MappingKey mappingKey) {
         return null;
     }
+
+    @Override
+    public List<MappingValue> mappingQueried(List<MappingKey> mappingKeys) {
+        return null;
+    }
 }
diff --git a/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/MappingManager.java b/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/MappingManager.java
index b6e01c8..4283c78 100755
--- a/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/MappingManager.java
+++ b/apps/mappingmanagement/mgr/src/main/java/org/onosproject/mapping/impl/MappingManager.java
@@ -15,7 +15,9 @@
  */
 package org.onosproject.mapping.impl;
 
+import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
+import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -44,6 +46,7 @@
 import org.onosproject.net.provider.AbstractProviderService;
 import org.slf4j.Logger;
 
+import java.util.List;
 import java.util.Set;
 
 import static org.slf4j.LoggerFactory.getLogger;
@@ -190,5 +193,17 @@
         public MappingValue mappingQueried(MappingKey mappingKey) {
             return getMappingValueByMappingKey(mappingKey);
         }
+
+        @Override
+        public List<MappingValue> mappingQueried(List<MappingKey> mappingKeys) {
+            List<MappingValue> values = Lists.newArrayList();
+            mappingKeys.forEach(key -> {
+                MappingValue value = getMappingValueByMappingKey(key);
+                if (value != null) {
+                    values.add(value);
+                }
+            });
+            return ImmutableList.copyOf(values);
+        }
     }
 }
diff --git a/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java b/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
index a7ba95f..bdf685a 100644
--- a/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
+++ b/providers/lisp/mapping/src/main/java/org/onosproject/provider/lisp/mapping/impl/LispMappingProvider.java
@@ -152,7 +152,9 @@
                     List<MappingKey> keys = Lists.newArrayList();
                     records.forEach(r -> keys.add(new MappingKeyBuilder(deviceService,
                             deviceId, r.getPrefix()).build()));
-                    keys.forEach(key -> providerService.mappingQueried(key));
+                    // TODO: returned mapping values will be converted to
+                    // protocol specifics and wrapped into a mapping record
+                    providerService.mappingQueried(keys);
                     break;
 
                 case LISP_MAP_REGISTER:
