diff --git a/src/main/java/com/iemr/common/identity/controller/IdentityController.java b/src/main/java/com/iemr/common/identity/controller/IdentityController.java
index e256fd11..e9a43764 100644
--- a/src/main/java/com/iemr/common/identity/controller/IdentityController.java
+++ b/src/main/java/com/iemr/common/identity/controller/IdentityController.java
@@ -317,9 +317,9 @@ public class IdentityController {
 
 	// search beneficiary by lastModDate and districtID
 	@CrossOrigin(origins = { "*commonapi*" })
-	@ApiOperation(value ="Search beneficiary by blockId and last modified date")
-	@PostMapping(path = "/searchByDistrictId")
-	public @ResponseBody String searchBeneficiaryByBlockIdAndLastModDate(
+	@ApiOperation(value ="Search beneficiary by villageId and last modified date-time")
+	@PostMapping(path = "/searchByVillageIdAndLastModifiedDate")
+	public @ResponseBody String searchBeneficiaryByVillageIdAndLastModDate(
 			@ApiParam(value = "\"String\"") @RequestBody String object) {
 		logger.info("IdentityController.getBeneficiary - start. search object = " + object);
 		String response;
@@ -328,14 +328,40 @@ public class IdentityController {
 			JsonElement json = new JsonParser().parse(object);
 
 			SearchSyncDTO search = InputMapper.getInstance().gson().fromJson(json, SearchSyncDTO.class);
-			List<BeneficiariesDTO> list = svc.searchBeneficiaryByBlockIdAndLastModifyDate(search.getBlockID(), new Timestamp(search.getLastModifDate()));
+			List<BeneficiariesDTO> list = svc.searchBeneficiaryByVillageIdAndLastModifyDate(search.getVillageID(), new Timestamp(search.getLastModifiedDate()));
 
-			response = getSuccessResponseString(list, 200, "success", "getIdentityByAgent");
+			response = getSuccessResponseString(list, 200, "success", "getIdentityByVillageAndLastSyncTime");
 
 			logger.info("IdentityController.getBeneficiary - end");
 		} catch (Exception e) {
-			logger.error("error in beneficiary search by Family Id : " + e.getLocalizedMessage());
-			response = getErrorResponseString("error in beneficiary search by block Id  : " + e.getLocalizedMessage(),
+			logger.error("error in beneficiary search by village Ids and last sync date : " + e.getLocalizedMessage());
+			response = getErrorResponseString("error in beneficiary search by village Ids and last sync date  : " + e.getLocalizedMessage(),
+					5000, "failure", "");
+		}
+		return response;
+	}
+
+	// search beneficiary by lastModDate and districtID
+	@CrossOrigin(origins = { "*commonapi*" })
+	@ApiOperation(value ="Get count of beneficiary by villageId and last modified date-time")
+	@PostMapping(path = "/countBenByVillageIdAndLastModifiedDate")
+	public @ResponseBody String countBeneficiaryByVillageIdAndLastModDate(
+			@ApiParam(value = "\"String\"") @RequestBody String object) {
+		logger.info("IdentityController.getBeneficiaryCount- start. search object = " + object);
+		String response;
+		try {
+
+			JsonElement json = new JsonParser().parse(object);
+
+			SearchSyncDTO search = InputMapper.getInstance().gson().fromJson(json, SearchSyncDTO.class);
+			Long beneficiaryCount = svc.countBeneficiaryByVillageIdAndLastModifyDate(search.getVillageID(), new Timestamp(search.getLastModifiedDate()));
+
+			response = getSuccessResponseString(String.valueOf(beneficiaryCount), 200, "success", "getIdentityCountByVillageAndLastSyncTime");
+
+			logger.info("IdentityController.getBeneficiaryCount - end");
+		} catch (Exception e) {
+			logger.error("error in getting beneficiary count by village Ids and last sync date : " + e.getLocalizedMessage());
+			response = getErrorResponseString("error in getting beneficiary count by village Ids and last sync date  : " + e.getLocalizedMessage(),
 					5000, "failure", "");
 		}
 		return response;
diff --git a/src/main/java/com/iemr/common/identity/dto/SearchSyncDTO.java b/src/main/java/com/iemr/common/identity/dto/SearchSyncDTO.java
index b224159b..45bf61c2 100644
--- a/src/main/java/com/iemr/common/identity/dto/SearchSyncDTO.java
+++ b/src/main/java/com/iemr/common/identity/dto/SearchSyncDTO.java
@@ -22,11 +22,12 @@
 package com.iemr.common.identity.dto;
 
 import lombok.Data;
+import java.util.List;
 
 @Data
 public class SearchSyncDTO {
 
-	private Long lastModifDate;
-	private Integer blockID;
+	private Long lastModifiedDate;
+	private List<Integer> villageID;
 
 }
diff --git a/src/main/java/com/iemr/common/identity/repo/BenMappingRepo.java b/src/main/java/com/iemr/common/identity/repo/BenMappingRepo.java
index 3154b69f..253c73c1 100644
--- a/src/main/java/com/iemr/common/identity/repo/BenMappingRepo.java
+++ b/src/main/java/com/iemr/common/identity/repo/BenMappingRepo.java
@@ -126,10 +126,14 @@ public List<Object[]> getBenMappingByBenDetailsIds(@Param("benDetailsIds") List<
 	public List<Object[]> getBenMappingByVanSerialNo(@Param("benMapIds") BigInteger benMapIds,
 			@Param("vanID") Integer vanID);
 
-	@Query(value = "select m from MBeneficiarymapping m where m.mBeneficiaryaddress.permVillageId = :blockID and (m.mBeneficiaryAccount.lastModDate > :lastModDate "
-			+ "or m.mBeneficiaryaddress.lastModDate > :lastModDate or m.mBeneficiaryconsent.lastModDate > :lastModDate "
-			+ "or m.mBeneficiarycontact.lastModDate > :lastModDate or m.mBeneficiarydetail.lastModDate > :lastModDate ) "
-			+ "order by m.benMapId Desc")
-	List<MBeneficiarymapping> findByBeneficiaryDetailsByBlockIDAndLastModifyDate(@Param("blockID") int blockID, @Param("lastModDate") Timestamp lastModDate);
+	@Query(value = "select m from MBeneficiarymapping m where m.mBeneficiaryaddress.permVillageId IN :villageIDs and "
+			+ "(m.mBeneficiaryaddress.lastModDate > :lastModDate or m.mBeneficiarycontact.lastModDate > :lastModDate "
+			+ "or m.mBeneficiarydetail.lastModDate > :lastModDate ) order by m.benMapId Desc")
+	List<MBeneficiarymapping> findByBeneficiaryDetailsByVillageIDAndLastModifyDate(@Param("villageIDs") List<Integer> villageID, @Param("lastModDate") Timestamp lastModifiedDate);
+
+	@Query(value = "select COUNT(m) from MBeneficiarymapping m where m.mBeneficiaryaddress.permVillageId IN :villageIDs and "
+			+ "(m.mBeneficiaryaddress.lastModDate > :lastModDate or m.mBeneficiarycontact.lastModDate > :lastModDate "
+			+ "or m.mBeneficiarydetail.lastModDate > :lastModDate ) order by m.benMapId Desc")
+	Long getBeneficiaryCountsByVillageIDAndLastModifyDate(@Param("villageIDs") List<Integer> villageID, @Param("lastModDate") Timestamp lastModifiedDate);
 
 }
diff --git a/src/main/java/com/iemr/common/identity/service/IdentityService.java b/src/main/java/com/iemr/common/identity/service/IdentityService.java
index dce6bd25..d1315a39 100644
--- a/src/main/java/com/iemr/common/identity/service/IdentityService.java
+++ b/src/main/java/com/iemr/common/identity/service/IdentityService.java
@@ -24,7 +24,6 @@
 import java.math.BigDecimal;
 import java.math.BigInteger;
 import java.sql.Timestamp;
-import java.text.DateFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
@@ -508,28 +507,39 @@ public List<BeneficiariesDTO> searhBeneficiaryByFamilyId(String familyId)
 		return beneficiaryList;
 	}
 
-	public List<BeneficiariesDTO> searchBeneficiaryByBlockIdAndLastModifyDate(Integer blockID, Timestamp lastModDate) {
+	public List<BeneficiariesDTO> searchBeneficiaryByVillageIdAndLastModifyDate(List<Integer> villageIDs, Timestamp lastModifiedDate) {
 
 		List<BeneficiariesDTO> beneficiaryList = new ArrayList<BeneficiariesDTO>();
 		try {
 			// find benmap ids
-			List<MBeneficiarymapping> benMappingsList = mappingRepo.findByBeneficiaryDetailsByBlockIDAndLastModifyDate(blockID, lastModDate);
-			if (benMappingsList == null || benMappingsList.size() == 0){
-				return beneficiaryList;
-			}
-			else {
+			List<MBeneficiarymapping> benMappingsList = mappingRepo.findByBeneficiaryDetailsByVillageIDAndLastModifyDate(villageIDs, lastModifiedDate);
+			if (benMappingsList != null && !benMappingsList.isEmpty()){
+
 				for (MBeneficiarymapping benMapOBJ : benMappingsList) {
 					beneficiaryList.add(this.getBeneficiariesDTO(benMapOBJ));
 				}
 			}
-
 		} catch (Exception e) {
 			logger.error(
-					"error in beneficiary search for familyId : " + blockID + " error : " + e.getLocalizedMessage());
+					"error in beneficiary search to sync to CHO App with villageIDs: " + villageIDs + " error : " + e.getLocalizedMessage());
 		}
 		return beneficiaryList;
 	}
 
+	public Long countBeneficiaryByVillageIdAndLastModifyDate(List<Integer> villageIDs, Timestamp lastModifiedDate) {
+
+		Long beneficiaryCount= 0L;
+		try {
+			// find benmap ids
+			beneficiaryCount = mappingRepo.getBeneficiaryCountsByVillageIDAndLastModifyDate(villageIDs, lastModifiedDate);
+
+		} catch (Exception e) {
+			logger.error(
+					"error in getting beneficiary count to sync to CHO App with villageIDs: " + villageIDs + " error : " + e.getLocalizedMessage());
+		}
+		return beneficiaryCount;
+	}
+
 	public List<BeneficiariesDTO> searhBeneficiaryByGovIdentity(String identity)
 			throws NoResultException, QueryTimeoutException, Exception {
 		List<BeneficiariesDTO> beneficiaryList = new ArrayList<BeneficiariesDTO>();
