diff --git a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java
index e7acf66..a1707e0 100644
--- a/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java
+++ b/apps/dhcp/app/src/main/java/org/onosproject/dhcp/impl/DhcpManager.java
@@ -241,12 +241,12 @@
     }
 
     @Override
-    public boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress, boolean fromOpenStack,
+    public boolean setStaticMapping(MacAddress macID, Ip4Address ipAddress, boolean rangeNotEnforced,
                                     List<Ip4Address> addressList) {
         log.debug("setStaticMapping is called with Mac: {}, Ip: {} addressList: {}",
                 macID.toString(), ipAddress.toString(), addressList.toString());
 
-        return dhcpStore.assignStaticIP(macID, ipAddress, fromOpenStack, addressList);
+        return dhcpStore.assignStaticIP(macID, ipAddress, rangeNotEnforced, addressList);
     }
 
     @Override
@@ -279,7 +279,7 @@
 
             ipAssignment = dhcpStore.getIpAssignmentFromAllocationMap(HostId.hostId(packet.getSourceMAC()));
 
-            if (ipAssignment != null && ipAssignment.fromOpenStack()) {
+            if (ipAssignment != null && ipAssignment.rangeNotEnforced()) {
                 subnetMaskReply = ipAssignment.subnetMask();
                 dhcpServerReply = ipAssignment.dhcpServer();
                 domainServerReply = ipAssignment.domainServer();
@@ -484,8 +484,9 @@
                     if (flagIfServerIP && flagIfRequestedIP) {
                         // SELECTING state
 
+
                         if (dhcpStore.getIpAssignmentFromAllocationMap(HostId.hostId(clientMac))
-                                .fromOpenStack()) {
+                                .rangeNotEnforced()) {
                             outgoingPacketType = DHCPPacketType.DHCPACK;
                             Ethernet ethReply = buildReply(packet, requestedIP, (byte) outgoingPacketType.getValue());
                             sendReply(context, ethReply);
