diff --git a/pom.xml b/pom.xml
index 6c201fbbafb516b807d23f59e206af7abff3abe3..e869025f45e7d271adfcb6739fe91d1a8011af52 100644
--- a/pom.xml
+++ b/pom.xml
@@ -232,6 +232,16 @@
 			<artifactId>json-utils</artifactId>
 			<version>0.0.24</version>
 		</dependency>
+		<!-- Spring Boot Starter Data Redis -->
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-redis</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-mail</artifactId>
+		</dependency>
 	</dependencies>
 	<build>
 		<plugins>
diff --git a/src/main/java/org/upsmf/grievance/controller/GrievanceRaiseController.java b/src/main/java/org/upsmf/grievance/controller/GrievanceRaiseController.java
new file mode 100644
index 0000000000000000000000000000000000000000..137d9786095d28d288972bb6eed5011f1e4148cf
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/controller/GrievanceRaiseController.java
@@ -0,0 +1,34 @@
+package org.upsmf.grievance.controller;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import org.upsmf.grievance.model.GrievanceRaise;
+import org.upsmf.grievance.model.GrievanceTicket;
+import org.upsmf.grievance.model.Ticket;
+import org.upsmf.grievance.service.GrievanceRaiseService;
+import org.upsmf.grievance.util.*;
+
+import javax.annotation.security.PermitAll;
+
+@RestController
+@RequestMapping("/grievance")
+public class GrievanceRaiseController {
+    @Autowired
+    private GrievanceRaiseService service;
+
+    @PostMapping(value ="/grievanceRaise")
+    public String addGrievance(@RequestBody GrievanceRaise grievance)
+            throws JsonProcessingException {
+        GrievanceTicket grievanceTicket = service.addGrievance(grievance);
+        // validating response
+        if (grievanceTicket != null) {
+            // return success response
+            return ResponseGenerator.successResponse(grievanceTicket);
+        }
+        // return error response
+        return ResponseGenerator.failureResponse();
+    }
+
+
+}
diff --git a/src/main/java/org/upsmf/grievance/controller/OtpController.java b/src/main/java/org/upsmf/grievance/controller/OtpController.java
new file mode 100644
index 0000000000000000000000000000000000000000..ad528f08fbb4e6f42a714d6b948c236788241250
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/controller/OtpController.java
@@ -0,0 +1,42 @@
+package org.upsmf.grievance.controller;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.*;
+import org.upsmf.grievance.model.OtpRequest;
+import org.upsmf.grievance.model.OtpValidationRequest;
+import org.upsmf.grievance.model.Ticket;
+import org.upsmf.grievance.service.OtpService;
+import org.upsmf.grievance.service.TicketService;
+
+@RestController
+@RequestMapping("/otp")
+public class OtpController {
+
+    @Autowired
+    private OtpService otpService;
+
+    @PostMapping("/generate-otp")
+    public ResponseEntity<String> generateOtp(@RequestBody OtpRequest otpRequest) {
+        try {
+            otpService.generateAndSendOtp(otpRequest);
+            return ResponseEntity.ok("OTP generated and sent successfully to " + otpRequest.getEmail());
+        } catch (Exception e) {
+            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
+                    .body("Failed to generate and send OTP: " + e.getMessage());
+        }
+    }
+
+    @PostMapping("/validate-otp")
+    public ResponseEntity<String> validateOtp(@RequestBody OtpValidationRequest otpValidationRequest) {
+        boolean isValid = otpService.validateOtp(otpValidationRequest.getEmail(), otpValidationRequest.getOtp());
+        if (isValid) {
+            return ResponseEntity.ok("OTP validation successful.");
+        } else {
+            return ResponseEntity.badRequest().body("Invalid OTP.");
+        }
+    }
+
+
+}
diff --git a/src/main/java/org/upsmf/grievance/dao/TicketDao.java b/src/main/java/org/upsmf/grievance/dao/TicketDao.java
index dfed0c3168f5ffc5739211621d6a835ea81e713a..289e58da94b88f948640a6fef76c82d940c7322c 100644
--- a/src/main/java/org/upsmf/grievance/dao/TicketDao.java
+++ b/src/main/java/org/upsmf/grievance/dao/TicketDao.java
@@ -81,4 +81,6 @@ public interface TicketDao {
 
 	boolean sendRepliesToReviews(Updates updates);
 
+	Ticket addTicketwithOtp(Ticket ticket,String Otp);
+
 }
diff --git a/src/main/java/org/upsmf/grievance/dao/impl/TicketDaoImpl.java b/src/main/java/org/upsmf/grievance/dao/impl/TicketDaoImpl.java
index f1425e538e92c93d0e43393feea6093977e90306..474f3beed461ee28ed29b26f80b3c43c24c4c83b 100644
--- a/src/main/java/org/upsmf/grievance/dao/impl/TicketDaoImpl.java
+++ b/src/main/java/org/upsmf/grievance/dao/impl/TicketDaoImpl.java
@@ -11,6 +11,7 @@ import java.sql.SQLException;
 import java.sql.Timestamp;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.time.format.DateTimeFormatter;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Date;
@@ -52,6 +53,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.http.HttpEntity;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpMethod;
@@ -62,6 +64,7 @@ import org.springframework.jdbc.core.BatchPreparedStatementSetter;
 import org.springframework.jdbc.core.JdbcTemplate;
 import org.springframework.jdbc.core.PreparedStatementCreator;
 import org.springframework.jdbc.support.KeyHolder;
+import org.springframework.mail.javamail.JavaMailSender;
 import org.springframework.stereotype.Repository;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartFile;
@@ -97,6 +100,7 @@ import org.upsmf.grievance.model.mapper.SqlDataMapper;
 import org.upsmf.grievance.model.mapper.SqlDataMapper.HelpdeskRowRecordMapper;
 import org.upsmf.grievance.model.mapper.SqlDataMapper.TicketWorkFlowMapperV2;
 import org.upsmf.grievance.service.HelpdeskService;
+import org.upsmf.grievance.service.OtpService;
 import org.upsmf.grievance.service.UserService;
 import org.upsmf.grievance.util.Constants;
 import org.upsmf.grievance.util.DateUtil;
@@ -169,6 +173,9 @@ public class TicketDaoImpl implements TicketDao {
 	@Autowired
 	private TicketsRequestInterceptor ticketsRequestInterceptor;
 
+	@Autowired
+	private OtpService otpService;
+
 	public TicketDaoImpl(@Value("${image.source.attachment.aws}") Boolean attachmentSource, JdbcTemplate jdbcTemplate,
 			HelpdeskDao helpdeskDao, HelpdeskService helpdeskService, SuperAdminDao superAdminDao) {
 		this.attachmentSource = attachmentSource;
@@ -282,7 +289,7 @@ public class TicketDaoImpl implements TicketDao {
 			ticket.setOperation("save");
 			ticket.setStatus(value);
 			if (ticket.getSourceId().equals(3L)) {
-				sendTicketEmail(ticket);
+				sendTicketEmailVal(ticket,ticket.getRequesterEmail());
 				ticketsRequestInterceptor.addData(ticket);
 			}
 			if (!value1) {
@@ -296,6 +303,20 @@ public class TicketDaoImpl implements TicketDao {
 		return ticket;
 	}
 
+	@Override
+	public Ticket addTicketwithOtp(Ticket ticket, String Otp){
+		if (ProjectUtil.isObjectNull(intializeAddTicket(ticket))) {
+			return null;
+		}
+		if (ProjectUtil.isObjectNull(getApps(ticket))) {
+			return null;
+		}
+		if(!otpService.validateOtp(ticket.getRequesterEmail(),Otp)){
+			return null;
+		}
+		return addTicket(ticket);
+	}
+
 	public void setUsername(Ticket ticket) {
 		User user = new User();
 		if (!StringUtils.isBlank(ticket.getUserName())) {
@@ -401,7 +422,7 @@ public class TicketDaoImpl implements TicketDao {
 	}
 
 	public String genText() {
-		String randomText = "abcdefghijklmnopqrstuvwxyz123456789";
+		String randomText = Constants.RANDOM;
 		int length = 5;
 		return RandomStringUtils.random(length, randomText);
 	}
@@ -424,6 +445,23 @@ public class TicketDaoImpl implements TicketDao {
 		}
 	}
 
+
+	private void sendTicketEmailVal(Ticket ticket, String recipientEmail) {
+		try {
+			DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(DateUtil.DEFAULT_DATE_FORMAT);
+			User user = superAdminDao.userDetailsByUserId(ticket.getRequestedBy());
+			user.setOrgId(MasterDataManager.getUserOrgMap().get(ticket.getRequestedBy()));
+			Map<String, String> keyValue = new HashMap<>();
+			keyValue.put(JsonKey.FIRST_NAME, user.getName());
+			keyValue.put(JsonKey.ID, ticket.getId().toString());
+			keyValue.put(JsonKey.DATE, ticket.getCreatedTime().toLocalDateTime().format(dateTimeFormatter));
+			String[] emails = recipientEmail.split(",");
+			SendMail.sendMail(keyValue, emails, Constants.TICKETCREATION, "new-ticket-createdby-aurora.vm");
+		} catch (ResourceNotFoundException e) {
+			LOGGER.error(String.format(ENCOUNTERED_AN_EXCEPTION_S, e.getMessage()));
+		}
+	}
+
 	private void mapTicketToHelpdesk(Ticket ticket) {
 		if (ticket.getAppId() != null) {
 			jdbcTemplate.update(Sql.Ticket.ADD_TICKET_TO_HELPDESK,
diff --git a/src/main/java/org/upsmf/grievance/model/GrievanceRaise.java b/src/main/java/org/upsmf/grievance/model/GrievanceRaise.java
new file mode 100644
index 0000000000000000000000000000000000000000..45f9680d88be297d49154e193b46cd1a74b947e2
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/model/GrievanceRaise.java
@@ -0,0 +1,35 @@
+package org.upsmf.grievance.model;
+
+import com.fasterxml.jackson.annotation.JsonInclude;
+import lombok.*;
+
+import java.util.List;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(includeFieldNames = true)
+public class GrievanceRaise {
+
+    private String name;
+
+    private String emailId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private String phone;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private Long orgId;
+
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    private Long helpdeskId;
+
+    private String description;
+
+    private List<String> filePath;
+
+    private String otp;
+
+
+}
diff --git a/src/main/java/org/upsmf/grievance/model/GrievanceTicket.java b/src/main/java/org/upsmf/grievance/model/GrievanceTicket.java
new file mode 100644
index 0000000000000000000000000000000000000000..0bbe8fe5feda5b10aa7f8306918995a99e3fb53e
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/model/GrievanceTicket.java
@@ -0,0 +1,16 @@
+package org.upsmf.grievance.model;
+
+import lombok.*;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(includeFieldNames = true)
+@Builder
+public class GrievanceTicket {
+
+    private Long ticketId;
+
+    private String date;
+}
diff --git a/src/main/java/org/upsmf/grievance/model/OtpRequest.java b/src/main/java/org/upsmf/grievance/model/OtpRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..c570af4db0b0bad5efc9a30db57443c4d4d7980a
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/model/OtpRequest.java
@@ -0,0 +1,17 @@
+package org.upsmf.grievance.model;
+
+import lombok.*;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(includeFieldNames = true)
+public class OtpRequest {
+
+    private String email;
+    private String phoneNumber;
+
+    private  String name;
+
+}
diff --git a/src/main/java/org/upsmf/grievance/model/OtpValidationRequest.java b/src/main/java/org/upsmf/grievance/model/OtpValidationRequest.java
new file mode 100644
index 0000000000000000000000000000000000000000..92093c2b3896c21bfa13bd01f93197753e966255
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/model/OtpValidationRequest.java
@@ -0,0 +1,15 @@
+package org.upsmf.grievance.model;
+
+
+import lombok.*;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(includeFieldNames = true)
+public class OtpValidationRequest {
+
+    private String email;
+    private String otp;
+}
diff --git a/src/main/java/org/upsmf/grievance/model/RedisTicketData.java b/src/main/java/org/upsmf/grievance/model/RedisTicketData.java
new file mode 100644
index 0000000000000000000000000000000000000000..ef8858418fa3dc6c5bb558e4f57edab36d4bd3f4
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/model/RedisTicketData.java
@@ -0,0 +1,24 @@
+package org.upsmf.grievance.model;
+
+import lombok.*;
+
+@Getter
+@Setter
+@NoArgsConstructor
+@AllArgsConstructor
+@ToString(includeFieldNames = true)
+public class RedisTicketData {
+
+    private String email;
+    private Long ticketId;
+
+    private String date;
+
+    private String emailOtp;
+
+    private String mobileOtp;
+
+    private String phoneNumber;
+
+
+}
diff --git a/src/main/java/org/upsmf/grievance/model/Ticket.java b/src/main/java/org/upsmf/grievance/model/Ticket.java
index 87337b0617a21cd50bb803948f747cd3de9dd0aa..de23e8579b77bf499bf5a6ad0c2577201fddee45 100644
--- a/src/main/java/org/upsmf/grievance/model/Ticket.java
+++ b/src/main/java/org/upsmf/grievance/model/Ticket.java
@@ -3,6 +3,7 @@ package org.upsmf.grievance.model;
 import java.sql.Timestamp;
 import java.util.List;
 
+
 import org.upsmf.grievance.dto.TicketWorkflowDto;
 
 import lombok.AllArgsConstructor;
@@ -79,5 +80,25 @@ public class Ticket {
 	private List<String> attachmentUrl;
 	private List<String> selectedTags;
 	private List<Tags> tags;
+	private String requesterEmail;
+	private String requesterPhoneNumber;
+	private String requesterUser;
+
+	private Boolean junk;
+
+	private Long lastUpdatedBy;
+
+	private Boolean escalated;
+
+	private Timestamp escalatedDate;
+
+	private Long escalatedTo;
+
+	private String requestedType;
+
+	private List<String> comment;
+
+	private List<String> requestedAttachmentUrl;
 
+	private String escalatedBy;
 }
\ No newline at end of file
diff --git a/src/main/java/org/upsmf/grievance/service/GrievanceRaiseService.java b/src/main/java/org/upsmf/grievance/service/GrievanceRaiseService.java
new file mode 100644
index 0000000000000000000000000000000000000000..785e5c4d11f31ede0fef3716f50d0de866d77db8
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/service/GrievanceRaiseService.java
@@ -0,0 +1,10 @@
+package org.upsmf.grievance.service;
+
+import org.upsmf.grievance.model.GrievanceRaise;
+import org.upsmf.grievance.model.GrievanceTicket;
+
+
+public interface GrievanceRaiseService {
+
+    GrievanceTicket addGrievance(GrievanceRaise grievanceRaise);
+}
diff --git a/src/main/java/org/upsmf/grievance/service/OtpService.java b/src/main/java/org/upsmf/grievance/service/OtpService.java
new file mode 100644
index 0000000000000000000000000000000000000000..af2d950d03a637d012381775c7a9225cf2d21d8a
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/service/OtpService.java
@@ -0,0 +1,12 @@
+package org.upsmf.grievance.service;
+
+import org.springframework.stereotype.Service;
+import org.upsmf.grievance.model.OtpRequest;
+import org.upsmf.grievance.model.Ticket;
+
+@Service
+public interface OtpService {
+
+    String generateAndSendOtp(OtpRequest otpRequest);
+    boolean validateOtp(String email, String otp);
+}
diff --git a/src/main/java/org/upsmf/grievance/service/OtpServiceImpl.java b/src/main/java/org/upsmf/grievance/service/OtpServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..13833c267a69ba397a88c134d8d071fa80b35cf2
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/service/OtpServiceImpl.java
@@ -0,0 +1,112 @@
+package org.upsmf.grievance.service;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.StringRedisTemplate;
+import org.springframework.mail.SimpleMailMessage;
+import org.springframework.mail.javamail.JavaMailSender;
+import org.springframework.stereotype.Service;
+import org.upsmf.grievance.model.OtpRequest;
+import org.upsmf.grievance.model.RedisTicketData;
+
+
+import java.util.concurrent.TimeUnit;
+
+@Service(value = "OtpService")
+public class OtpServiceImpl implements OtpService{
+
+    @Autowired
+    private StringRedisTemplate redisTemplate;
+
+    @Autowired
+    private JavaMailSender mailSender;
+
+    @Value("${otp.expiration.minutes}")
+    private int otpExpirationMinutes;
+
+
+
+    @Autowired
+    public OtpServiceImpl(StringRedisTemplate redisTemplate, JavaMailSender mailSender) {
+        this.redisTemplate = redisTemplate;
+        this.mailSender = mailSender;
+    }
+
+    @Override
+    public String generateAndSendOtp(OtpRequest otpRequest) {
+        String email = otpRequest.getEmail();
+        String otp = generateOtp();
+        String mobileOtp= generateOtp();
+        RedisTicketData redisTicketData = new RedisTicketData();
+        redisTicketData.setEmail(email);
+        redisTicketData.setPhoneNumber(otpRequest.getPhoneNumber());
+        redisTicketData.setEmailOtp(otp);
+        redisTicketData.setMobileOtp(mobileOtp);
+
+
+
+        String redisKey = "otp:" + email;
+        redisTemplate.opsForValue().set(redisKey, toJson(redisTicketData), otpExpirationMinutes, TimeUnit.MINUTES);
+
+        sendOtpEmail(email, otp);
+        return otp;
+    }
+
+    @Override
+    public boolean validateOtp(String email, String enteredOtp) {
+        String redisKey = "otp:" + email;
+        String redisData = redisTemplate.opsForValue().get(redisKey);
+        if (redisData != null) {
+            RedisTicketData ticketData = fromJson(redisData, RedisTicketData.class);
+            if (ticketData.getEmailOtp().equals(enteredOtp)) {
+                // Remove the data from Redis after successful validation
+                redisTemplate.delete(redisKey);
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private String toJson(Object obj) {
+        try {
+            ObjectMapper objectMapper = new ObjectMapper();
+            return objectMapper.writeValueAsString(obj);
+        } catch (JsonProcessingException e) {
+            // Handle the exception
+            return null;
+        }
+    }
+
+    private <T> T fromJson(String json, Class<T> valueType) {
+        try {
+            ObjectMapper objectMapper = new ObjectMapper();
+            return objectMapper.readValue(json, valueType);
+        } catch (JsonProcessingException e) {
+            // Handle the exception
+            return null;
+        }
+    }
+
+
+    private String generateOtp() {
+        int otpLength = 6;
+        StringBuilder otp = new StringBuilder();
+
+        for (int i = 0; i < otpLength; i++) {
+            int digit = (int) (Math.random() * 10);
+            otp.append(digit);
+        }
+
+        return otp.toString();
+    }
+
+    private void sendOtpEmail(String email, String otp) {
+        SimpleMailMessage message = new SimpleMailMessage();
+        message.setTo(email);
+        message.setSubject("Your OTP for Ticket Creation");
+        message.setText("Your OTP is: " + otp);
+        mailSender.send(message);
+    }
+}
diff --git a/src/main/java/org/upsmf/grievance/service/TicketService.java b/src/main/java/org/upsmf/grievance/service/TicketService.java
index 4cf25d731ca97d80a91d4d63d8d1a59fd3234326..34ad309d3ddf48a7c7f9eeb9ed46842fbd5ebd1b 100644
--- a/src/main/java/org/upsmf/grievance/service/TicketService.java
+++ b/src/main/java/org/upsmf/grievance/service/TicketService.java
@@ -79,4 +79,6 @@ public interface TicketService {
 	TicketCount getNoOfTickets(Long userId);
 
 	boolean pinTicket(Ticket ticket);
+
+	Ticket addTicketWithOtp(Ticket ticket, String otp);
 }
diff --git a/src/main/java/org/upsmf/grievance/service/impl/GrievanceRaiseServiceImpl.java b/src/main/java/org/upsmf/grievance/service/impl/GrievanceRaiseServiceImpl.java
new file mode 100644
index 0000000000000000000000000000000000000000..88124dff15c8078bac0e0416677dcd9a81a13d9c
--- /dev/null
+++ b/src/main/java/org/upsmf/grievance/service/impl/GrievanceRaiseServiceImpl.java
@@ -0,0 +1,61 @@
+package org.upsmf.grievance.service.impl;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Service;
+import org.upsmf.grievance.model.GrievanceRaise;
+import org.upsmf.grievance.model.GrievanceTicket;
+import org.upsmf.grievance.model.Ticket;
+import org.upsmf.grievance.service.GrievanceRaiseService;
+import org.upsmf.grievance.service.TicketService;
+
+@Service(value = "GrievanceRaiseService")
+public class GrievanceRaiseServiceImpl implements GrievanceRaiseService {
+
+    @Autowired
+    private TicketService ticketService;
+
+    @Value("${source_default_request_id}")
+    private Long sourceId;
+
+    @Value("${default_app_name}")
+    private String appName;
+
+    @Value("${default_app_id}")
+    private Long appId;
+
+    @Value("${default_app_key}")
+    private String appKey;
+
+    public static final Logger LOGGER = LoggerFactory.getLogger(GrievanceRaiseServiceImpl.class);
+
+    @Override
+    public GrievanceTicket addGrievance(GrievanceRaise grievance) {
+        LOGGER.info("Enter the addGrievanc method");
+        Ticket ticket=new Ticket();
+        ticket.setUserName(grievance.getName());
+        ticket.setHelpdeskId(grievance.getHelpdeskId());
+        ticket.setSourceId(sourceId);
+        ticket.setAppKey(appKey);
+        ticket.setAppId(appId);
+        ticket.setDescription(grievance.getDescription());
+        ticket.setAppName(appName);
+        ticket.setRequesterUser(grievance.getName());
+        ticket.setRequesterEmail(grievance.getEmailId());
+        ticket.setRequesterPhoneNumber(grievance.getPhone());
+         LOGGER.info("added all values to ticket" + ticket);
+        ticket=ticketService.addTicketWithOtp(ticket,grievance.getOtp());
+
+        // checking response
+        GrievanceTicket grievanceTicket = null;
+        LOGGER.info("after raise and sent a ticket to mail taking ticketid"+ticket.getId()+" date"+ticket.getCreatedTimeTS());
+        if(ticket!=null && ticket.getId()>0){
+            grievanceTicket = GrievanceTicket.builder().ticketId(ticket.getId())
+                    .date(ticket.getCreatedTime().toString()).build();
+            // send mail to stakeholder i.e. requestor, admins
+        }
+        return grievanceTicket;
+    }
+}
diff --git a/src/main/java/org/upsmf/grievance/service/impl/TicketServiceImpl.java b/src/main/java/org/upsmf/grievance/service/impl/TicketServiceImpl.java
index 3925cd5233a1a42c85de0095f1310e4adecea3fd..009558eed9513de1e94affb27bda367f588983ad 100644
--- a/src/main/java/org/upsmf/grievance/service/impl/TicketServiceImpl.java
+++ b/src/main/java/org/upsmf/grievance/service/impl/TicketServiceImpl.java
@@ -234,6 +234,11 @@ public class TicketServiceImpl implements TicketService {
 		return ticketDao.pinTicket(ticket);
 	}
 
+	@Override
+	public Ticket addTicketWithOtp(Ticket ticket, String otp) {
+		return ticketDao.addTicketwithOtp(ticket,otp);
+	}
+
 	@Override
 	public TicketCount getNoOfTickets(Long userId) {
 		return ticketDao.getNoOfTickets(userId);
diff --git a/src/main/java/org/upsmf/grievance/util/Constants.java b/src/main/java/org/upsmf/grievance/util/Constants.java
index 5fe70df828ba299e6c2e3685b7081651a3fcffa6..ef6edc9afa681462be351dca54c6e1c8b3202637 100644
--- a/src/main/java/org/upsmf/grievance/util/Constants.java
+++ b/src/main/java/org/upsmf/grievance/util/Constants.java
@@ -332,9 +332,8 @@ public class Constants {
 	public static final String MAX_RATING = "max-rating";
 	public static final String RATE = "rate";
 	public static final String DESCRIPTION = "description";
-
+  public static final String RANDOM="abcdefghijklmnopqrstuvwxyz123456789";
 	public static final String EL_STIC123 = "Elastic123";
-
 	public static final String ELASTIC = "elastic";
 
 	private static final String[] INCLUDE_FIELDS = new String[] { ID, STATUS, TOTAL, DESCRIPTION, PINNED_TICKET,
diff --git a/src/main/java/org/upsmf/grievance/util/JsonKey.java b/src/main/java/org/upsmf/grievance/util/JsonKey.java
index ee88bd18b4ba8cb910624cfe8eb24876a53820ab..3a803898a5c008a7317d551085f36cf14615a5ac 100644
--- a/src/main/java/org/upsmf/grievance/util/JsonKey.java
+++ b/src/main/java/org/upsmf/grievance/util/JsonKey.java
@@ -112,4 +112,6 @@ public class JsonKey {
 	public static final String NEWSTATUS = "newStatus";
 	public static final String ID = "id";
 	public static final String HELPDESKID = "helpdeskId";
+
+	public static final String DATE = "date";
 }
diff --git a/src/main/java/org/upsmf/grievance/util/Sql.java b/src/main/java/org/upsmf/grievance/util/Sql.java
index 6ed78a0aa668615083af8a6e075824a9feed28c8..04c433d35efd6b4cdd39f0a19fbe58d8e18eb8ac 100644
--- a/src/main/java/org/upsmf/grievance/util/Sql.java
+++ b/src/main/java/org/upsmf/grievance/util/Sql.java
@@ -294,7 +294,7 @@ public final class Sql {
 		public static final String GET_USER_ID_AND_USER_NAME = "SELECT id,name FROM \"user\" where is_active is true;";
 		public static final String UPDATE_ALLOW_ALL_USERS = "UPDATE helpdesk SET allow_all_users = ? WHERE id = ?";
 		public static final String REMOVE_ALL_TICKET_ATTACHMENT = "DELETE FROM ticket_attachment where ticket_id=?";
-		public static final String GET_HELPDESK_CHANNELS = "SELECT direct, playstore, appstore, aurora_sdk FROM helpdesk where id=? and is_active is true ";
+		public static final String GET_HELPDESK_CHANNELS = "SELECT direct, playstore, appstore, grievance_sdk FROM helpdesk where id=? and is_active is true ";
 
 		public static final String QUERY1 = "SELECT toa.aut_id as id, toa.base_url as name, auth_name as description from organization_auth toa, ";
 		public static final String QUERY2 = " authentication auth WHERE toa.aut_id = auth.id AND  toa.org_id = ";
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index ba08c5bc3ccdf374e20b4301a5ec3ada42baa471..f3aff8c23b97d9e7685c9cb38f0a01da7ed19b30 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -13,7 +13,7 @@ spring.jpa.hibernate.ddl-auto=none
 spring.datasource.initialization-mode=always
 spring.jpa.properties.hibernate.jdbc.lob.non_contextual_creation=true
 
-urls.whitelist=/,/user/login,/user/logout,/signup,/token/validate,/upload,/user/forgotPassword,/superadmin/getAuthTypes,/tickets/getTemplateVersion,/user/updateEkstepUser,/superadmin/addOrganization,/helpdesk/getPerformanceWithoutAccessControl
+urls.whitelist=/,/user/login,/user/logout,/signup,/token/validate,/upload,/user/forgotPassword,/superadmin/getAuthTypes,/tickets/getTemplateVersion,/user/updateEkstepUser,/superadmin/addOrganization,/helpdesk/getPerformanceWithoutAccessControl,/grievance/grievanceRaise,/otp/generate-otp,/otp/validate-otp
 
 services.esindexer.host=es.rain.idc.tarento.com
 services.esindexer.host.name=http://es.rain.idc.tarento.com/
@@ -32,7 +32,22 @@ elk.data.up=true
 image.source.aws=true
 image.source.attachment.aws=true
 
+source_default_request_id=3
+default_app_name=test app 9
+default_app_id=1
+default_app_key=26f3847b-74f5-418d-9621-c331b1907131
 
+spring.redis.host=
+spring.redis.port=
 
+# OTP expiration time in minutes
+otp.expiration.minutes=5
+
+spring.mail.host=
+spring.mail.port=
+spring.mail.username=
+spring.mail.password=
+spring.mail.properties.mail.smtp.auth=true
+spring.mail.properties.mail.smtp.starttls.enable=true