diff --git a/src/main/java/com/tarento/retail/config/JwtTokenUtil.java b/src/main/java/com/tarento/retail/config/JwtTokenUtil.java
index e8294df66cf7ec85d5a6156ddc32f612304cf8d0..558ade7fbfea1fce1e83f4f310420bc9b0530e30 100644
--- a/src/main/java/com/tarento/retail/config/JwtTokenUtil.java
+++ b/src/main/java/com/tarento/retail/config/JwtTokenUtil.java
@@ -9,6 +9,8 @@ import java.util.Arrays;
 import java.util.Date;
 import java.util.function.Function;
 
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
@@ -16,6 +18,7 @@ import org.springframework.stereotype.Component;
 
 import com.tarento.retail.model.User;
 import com.tarento.retail.util.AppConfiguration;
+import com.tarento.retail.util.Constants;
 
 import io.jsonwebtoken.Claims;
 import io.jsonwebtoken.Jwts;
@@ -23,64 +26,62 @@ import io.jsonwebtoken.SignatureAlgorithm;
 
 @Component
 public class JwtTokenUtil implements Serializable {
-	
+
+	public static final Logger LOGGER = LoggerFactory.getLogger(JwtTokenUtil.class);
+
 	/**
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
-	public static final String CLAIMS_KEY = "scopes";  
-	
+	public static final String CLAIMS_KEY = "scopes";
+
 	@Autowired
 	AppConfiguration appConfig;
 
-    public String getUsernameFromToken(String token) {
-        return getClaimFromToken(token, Claims::getSubject);
-    }
-
-    public Date getExpirationDateFromToken(String token) {
-        return getClaimFromToken(token, Claims::getExpiration);
-    }
-
-    public <T> T getClaimFromToken(String token, Function<Claims, T> claimsResolver) {
-        final Claims claims = getAllClaimsFromToken(token);
-        return claimsResolver.apply(claims);
-    }
-
-    private Claims getAllClaimsFromToken(String token) {
-        return Jwts.parser()
-                .setSigningKey(SIGNING_KEY)
-                .parseClaimsJws(token)
-                .getBody();
-    }
-
-    private Boolean isTokenExpired(String token) {
-        final Date expiration = getExpirationDateFromToken(token);
-        return expiration.before(new Date());
-    }
-
-    public String generateToken(User user) {
-        return doGenerateToken(user.getUsername());
-    }
-
-    private String doGenerateToken(String subject) {
-
-        Claims claims = Jwts.claims().setSubject(subject);
-        claims.put(CLAIMS_KEY, Arrays.asList(new SimpleGrantedAuthority(JWT_GRANTED_AUTHORITY)));
-
-        return Jwts.builder()
-                .setClaims(claims)
-                .setIssuer(JWT_ISSUER)
-                .setIssuedAt(new Date(System.currentTimeMillis()))
-                .setExpiration(new Date(System.currentTimeMillis() +  appConfig.getJwtValidity() * 60 * 1000))
-                .signWith(SignatureAlgorithm.HS256, SIGNING_KEY)
-                .compact();
-    }
-
-    public Boolean validateToken(String token, UserDetails userDetails) {
-        final String username = getUsernameFromToken(token);
-        return (
-              username.equals(userDetails.getUsername())
-                    && !isTokenExpired(token));
-    }
+	public String getUsernameFromToken(String token) {
+		return getClaimFromToken(token, Claims::getSubject);
+	}
+
+	public Date getExpirationDateFromToken(String token) {
+		return getClaimFromToken(token, Claims::getExpiration);
+	}
+
+	public <T> T getClaimFromToken(String token, Function<Claims, T> claimsResolver) {
+		final Claims claims = getAllClaimsFromToken(token);
+		return claimsResolver.apply(claims);
+	}
+
+	private Claims getAllClaimsFromToken(String token) {
+		return Jwts.parser().setSigningKey(SIGNING_KEY).parseClaimsJws(token).getBody();
+	}
+
+	public Boolean isTokenExpired(String token) {
+		try {
+			final Date expiration = getExpirationDateFromToken(token);
+			return expiration.before(new Date());
+		} catch (Exception e) {
+			LOGGER.error(String.format(Constants.EXCEPTION_METHOD, "isTokenExpired", e.getMessage()));
+			return Boolean.TRUE;
+		}
+	}
+
+	public String generateToken(User user) {
+		return doGenerateToken(user.getUsername());
+	}
+
+	private String doGenerateToken(String subject) {
+
+		Claims claims = Jwts.claims().setSubject(subject);
+		claims.put(CLAIMS_KEY, Arrays.asList(new SimpleGrantedAuthority(JWT_GRANTED_AUTHORITY)));
+
+		return Jwts.builder().setClaims(claims).setIssuer(JWT_ISSUER).setIssuedAt(new Date(System.currentTimeMillis()))
+				.setExpiration(new Date(System.currentTimeMillis() + appConfig.getJwtValidity() * 60 * 1000))
+				.signWith(SignatureAlgorithm.HS256, SIGNING_KEY).compact();
+	}
+
+	public Boolean validateToken(String token, UserDetails userDetails) {
+		final String username = getUsernameFromToken(token);
+		return (username.equals(userDetails.getUsername()) && !isTokenExpired(token));
+	}
 
 }
diff --git a/src/main/java/com/tarento/retail/controller/UserController.java b/src/main/java/com/tarento/retail/controller/UserController.java
index c3f21fdd190606eb7d1c308f919ea3f79a59bf42..b9ea9ae2c02b1183be409fc782934863b84edf3e 100644
--- a/src/main/java/com/tarento/retail/controller/UserController.java
+++ b/src/main/java/com/tarento/retail/controller/UserController.java
@@ -394,17 +394,16 @@ public class UserController {
 		return ResponseGenerator.failureResponse("Failed");
 	}
 
-	@RequestMapping(value = "getDeviceTokenForUserIds", method = RequestMethod.GET)
-	public List<UserDeviceToken> getUsersForAStore(
-			@RequestParam(value = "userIds", required = false) List<Long> userIdList) throws JsonProcessingException {
+	@RequestMapping(value = PathRoutes.UserRoutes.GET_USER_DEVICE_TOKEN, method = RequestMethod.GET)
+	public String getUsersDeviceToken(@RequestParam(value = "userIds", required = false) List<Long> userIdList)
+			throws JsonProcessingException {
 		if (userIdList != null) {
 			List<UserDeviceToken> tokenList = userService.getDeviceTokenForUsers(userIdList);
 			if (tokenList != null) {
-				return tokenList;
+				return ResponseGenerator.successResponse(tokenList);
 			}
-			return null;
 		}
-		return null;
+		return ResponseGenerator.failureResponse();
 	}
 
 	@RequestMapping(value = PathRoutes.UserRoutes.CREATE_UPDATE_COUNTRY, method = RequestMethod.POST)
diff --git a/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java b/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java
index ae546f44143e65b4ad44c1c531cbc6132b16331a..da4e2eca4792eda9baeaff10c34ea92e00852576 100644
--- a/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java
+++ b/src/main/java/com/tarento/retail/dao/impl/UserDaoImpl.java
@@ -22,6 +22,7 @@ import org.springframework.jdbc.support.GeneratedKeyHolder;
 import org.springframework.jdbc.support.KeyHolder;
 import org.springframework.stereotype.Repository;
 
+import com.tarento.retail.config.JwtTokenUtil;
 import com.tarento.retail.dao.RoleDao;
 import com.tarento.retail.dao.UserDao;
 import com.tarento.retail.dto.CountryDto;
@@ -64,6 +65,9 @@ public class UserDaoImpl implements UserDao {
 	@Autowired
 	RoleDao roleDao;
 
+	@Autowired
+	private JwtTokenUtil jwtTokenUtil;
+
 	@Override
 	public List<Action> findAllActionsByRoleID(Integer roleID) {
 		List<Action> actions = new ArrayList<Action>();
@@ -643,8 +647,14 @@ public class UserDaoImpl implements UserDao {
 	public List<UserDeviceToken> getDeviceTokenForUserList(List<Long> userIdList) {
 		List<UserDeviceToken> tokenList = new ArrayList<>();
 		try {
-			tokenList = jdbcTemplate.query(UserQueries.FETCH_USER_DEVICE_TOKEN + getIdQuery(userIdList)
-					+ UserQueries.USER_DEVICE_ROLE_CONDITION, new SqlDataMapper().new UserDeviceMapper());
+			List<UserDeviceToken> response = jdbcTemplate.query(
+					UserQueries.FETCH_USER_DEVICE_TOKEN + getIdQuery(userIdList),
+					new SqlDataMapper().new UserDeviceMapper());
+			for (UserDeviceToken tokens : response) {
+				if (!jwtTokenUtil.isTokenExpired(tokens.getAuthToken())) {
+					tokenList.add(tokens);
+				}
+			}
 		} catch (Exception e) {
 			LOGGER.error("Encountered an Exception while fetching User Device Token Map: " + e);
 		}
diff --git a/src/main/java/com/tarento/retail/model/UserDeviceToken.java b/src/main/java/com/tarento/retail/model/UserDeviceToken.java
index b0c907fdc1170adfa518c4ae321b2317aa92519c..fcdacdf1881b94cc707e35a5e655f85460cf6430 100644
--- a/src/main/java/com/tarento/retail/model/UserDeviceToken.java
+++ b/src/main/java/com/tarento/retail/model/UserDeviceToken.java
@@ -7,31 +7,42 @@ package com.tarento.retail.model;
  */
 
 public class UserDeviceToken {
-	
+
 	private Long userId;
 	private String deviceToken;
 	private String deviceId;
-	
+	private String authToken;
+
 	public Long getUserId() {
 		return userId;
 	}
+
 	public void setUserId(Long userId) {
 		this.userId = userId;
 	}
+
 	public String getDeviceToken() {
 		return deviceToken;
 	}
+
 	public void setDeviceToken(String deviceToken) {
 		this.deviceToken = deviceToken;
 	}
+
 	public String getDeviceId() {
 		return deviceId;
 	}
+
 	public void setDeviceId(String deviceId) {
 		this.deviceId = deviceId;
-	} 
-	
-	
-	
+	}
+
+	public String getAuthToken() {
+		return authToken;
+	}
+
+	public void setAuthToken(String authToken) {
+		this.authToken = authToken;
+	}
 
 }
diff --git a/src/main/java/com/tarento/retail/model/mapper/SqlDataMapper.java b/src/main/java/com/tarento/retail/model/mapper/SqlDataMapper.java
index adce2fa982523f2efde78b7073081796a9315481..bbffa90baa3f3c0bc49d3e908a5c9574d756216e 100644
--- a/src/main/java/com/tarento/retail/model/mapper/SqlDataMapper.java
+++ b/src/main/java/com/tarento/retail/model/mapper/SqlDataMapper.java
@@ -96,6 +96,7 @@ public class SqlDataMapper {
 			UserDeviceToken token = new UserDeviceToken();
 			token.setDeviceToken(rs.getString("device_token"));
 			token.setUserId(rs.getLong("user_id"));
+			token.setAuthToken(rs.getString("auth_token"));
 			return token;
 		}
 	}
@@ -311,10 +312,10 @@ public class SqlDataMapper {
 			return action;
 		}
 	}
-	
+
 	public class UserRoleCountMapper implements RowMapper<KeyValue> {
 		public KeyValue mapRow(ResultSet rs, int rowNum) throws SQLException {
-			KeyValue keyValue = new KeyValue(); 
+			KeyValue keyValue = new KeyValue();
 			keyValue.setKey(rs.getString("roleName"));
 			keyValue.setValue(rs.getObject("numberOfUsers"));
 			return keyValue;
diff --git a/src/main/java/com/tarento/retail/util/PathRoutes.java b/src/main/java/com/tarento/retail/util/PathRoutes.java
index 204f14ed487d0cd223d8adbf4c9790c11e4ed186..8797b32d924b627a7619370e928326f6c42bb55e 100644
--- a/src/main/java/com/tarento/retail/util/PathRoutes.java
+++ b/src/main/java/com/tarento/retail/util/PathRoutes.java
@@ -39,6 +39,7 @@ public interface PathRoutes {
 		final String MAP_USER_MASTER_ROLE_COUNTRY_ORG = "mapUserMasterRoleCountryOrg";
 		final String REQUEST_OTP = "/requestOTP";
 		final String NUMBER_OF_USERS_ROLES_GET = "/getNumberOfUsersAndRoles";
+		final String GET_USER_DEVICE_TOKEN = "getDeviceTokenForUserIds";
 	}
 
 	public interface AuthenticationRoutes {
diff --git a/src/main/java/com/tarento/retail/util/Sql.java b/src/main/java/com/tarento/retail/util/Sql.java
index 8243db6865246c765037eaf2212c66e812744fc8..b58809c8ed0847155caf4a01ec0f96dd865d00ab 100644
--- a/src/main/java/com/tarento/retail/util/Sql.java
+++ b/src/main/java/com/tarento/retail/util/Sql.java
@@ -147,7 +147,7 @@ public interface Sql {
 		final String CHECK_USER_DEVICE_TOKEN = "SELECT COUNT(*) FROM user_device WHERE user_id = ? AND device_token = ? ";
 		final String INSERT_USER_DEVICE_TOKEN = "INSERT INTO user_device (user_id, device_token, device_id, created_date, user_auth_id) VALUES (?,?,?,?,?) ";
 		final String UPDATE_USER_DEVICE_TOKEN = "UPDATE user_device SET device_token = ?, created_date = ? WHERE user_id = ? ";
-		final String FETCH_USER_DEVICE_TOKEN = " SELECT device.id, device.user_id, device.device_token FROM user_device device WHERE device.user_id IN ";
+		final String FETCH_USER_DEVICE_TOKEN = " SELECT device.id, device.user_id, device.device_token, auth_token FROM user_device device, user_authentication WHERE device.user_auth_id = user_authentication.id AND device.user_id IN ";
 		final String USER_DEVICE_ROLE_CONDITION = " and exists (select 1 from user_role where user_id = device.user_id and role_id IN (1,2)) "
 				+ "and not exists (select 1 from user_role where user_id = device.user_id and role_id NOT IN (1,2)) ";
 		final String FETCH_AUTH_TOKEN_REF = "SELECT id FROM user_authentication WHERE auth_token = ? ";