From fb89f2f58fa36b61970af65b93c292720417e753 Mon Sep 17 00:00:00 2001
From: wayne <wayne8692wayne8692@gmail.com>
Date: 星期四, 03 三月 2022 15:11:08 +0800
Subject: [PATCH] [update] 將後端大部分程式拉近PamBusiness中,已便共用

---
 pamapi/src/main/java/com/pollex/pam/config/DatabaseConfiguration.java                   |    6 
 pamapi/src/main/java/com/pollex/pam/config/WebsocketSecurityConfiguration.java          |    2 
 pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentMemoResource.java               |   21 -
 pamapi/src/test/java/com/pollex/pam/web/rest/PublicUserResourceIT.java                  |    6 
 pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java                   |   24 +-
 pamapi/src/main/java/com/pollex/pam/service/OtpWebService.java                          |    2 
 pamapi/src/main/java/com/pollex/pam/service/OtpUtilService.java                         |   12 
 pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantLoginValidateResource.java       |    8 
 pamapi/src/main/java/com/pollex/pam/web/rest/TestLoginResource.java                     |    4 
 pamapi/src/main/java/com/pollex/pam/aop/logging/LoggingAspect.java                      |    2 
 pamapi/src/main/java/com/pollex/pam/service/CustomerService.java                        |   22 +
 pamapi/src/main/java/com/pollex/pam/web/rest/InterviewRecordResource.java               |   11 
 pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java                           |   20 
 pamapi/src/main/java/com/pollex/pam/security/SpringSecurityAuditorAware.java            |    4 
 pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java                   |  123 +----------
 pamapi/pom.xml                                                                          |    5 
 pamapi/src/main/java/com/pollex/pam/service/CustomerAuthService.java                    |    8 
 pamapi/src/test/java/com/pollex/pam/web/rest/AccountResourceIT.java                     |   21 -
 pamapi/src/main/java/com/pollex/pam/web/rest/UserJWTController.java                     |    2 
 pamapi/src/main/java/com/pollex/pam/config/WebsocketConfiguration.java                  |    2 
 pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantResource.java                    |   25 -
 pamapi/src/main/java/com/pollex/pam/web/rest/TestSendMsgResource.java                   |    7 
 pamapi/src/test/java/com/pollex/pam/web/rest/UserJWTControllerIT.java                   |    6 
 pamapi/src/test/java/com/pollex/pam/web/rest/UserResourceIT.java                        |   14 
 pamapi/src/main/java/com/pollex/pam/security/DomainUserDetailsService.java              |    4 
 pamapi/src/main/java/com/pollex/pam/web/rest/AccountResource.java                       |   33 +-
 pamapi/src/main/java/com/pollex/pam/web/rest/EServiceResource.java                      |    9 
 pamapi/src/test/java/com/pollex/pam/config/NoOpMailConfiguration.java                   |    2 
 pamapi/src/main/java/com/pollex/pam/web/rest/errors/ExceptionTranslator.java            |    9 
 /dev/null                                                                               |   66 ------
 pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java                   |    2 
 pamapi/src/main/java/com/pollex/pam/web/rest/PersonalNotificationResource.java          |   27 +-
 pamapi/src/main/java/com/pollex/pam/config/CacheConfiguration.java                      |   10 
 pamapi/src/test/java/com/pollex/pam/ArchTest.java                                       |    4 
 pamapi/src/main/java/com/pollex/pam/web/rest/UserResource.java                          |   20 
 pamapi/src/main/java/com/pollex/pam/web/rest/CustomerInfoResource.java                  |    6 
 pamapi/src/main/java/com/pollex/pam/web/rest/NoticeResource.java                        |   17 
 pamapi/src/main/java/com/pollex/pam/security/provider/CustomAuthenticationProvider.java |    3 
 pamapi/src/main/java/com/pollex/pam/security/token/OtpAuthenticationToken.java          |    5 
 pamapi/src/main/java/com/pollex/pam/web/rest/SatisfactionResource.java                  |   16 
 pamapi/src/main/java/com/pollex/pam/security/provider/OtpAuthenticationProvider.java    |   12 
 pamapi/src/main/java/com/pollex/pam/web/rest/PublicUserResource.java                    |    4 
 42 files changed, 210 insertions(+), 396 deletions(-)

diff --git a/pamapi/pom.xml b/pamapi/pom.xml
index bda6083..500eb4e 100644
--- a/pamapi/pom.xml
+++ b/pamapi/pom.xml
@@ -101,6 +101,11 @@
 
     <dependencies>
         <dependency>
+            <groupId>com.pollex.pam.business</groupId>
+            <artifactId>PamBusiness</artifactId>
+            <version>1.0-SNAPSHOT</version>
+        </dependency>
+        <dependency>
             <groupId>tech.jhipster</groupId>
             <artifactId>jhipster-framework</artifactId>
         </dependency>
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/LoggingAspect.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/LoggingAspect.java
index 19b207e..50e5c0e 100644
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/LoggingAspect.java
+++ b/pamapi/src/main/java/com/pollex/pam/aop/logging/LoggingAspect.java
@@ -42,7 +42,7 @@
     /**
      * Pointcut that matches all Spring beans in the application's main packages.
      */
-    @Pointcut("within(com.pollex.pam.repository..*)" + " || within(com.pollex.pam.service..*)" + " || within(com.pollex.pam.web.rest..*)")
+    @Pointcut("within(com.pollex.pam.business.repository..*)" + " || within(com.pollex.pam.business.service..*)" + " || within(com.pollex.pam.web.rest..*)")
     public void applicationPackagePointcut() {
         // Method is empty as this is just a Pointcut, the implementations are in the advices.
     }
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/AuditLoggingAspect.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/AuditLoggingAspect.java
deleted file mode 100644
index 55c2b62..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/AuditLoggingAspect.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.pollex.pam.aop.logging.audit;
-
-import com.pollex.pam.aop.logging.audit.strategy.AuditLoggingFactory;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.aspectj.lang.annotation.Around;
-import org.aspectj.lang.annotation.Aspect;
-import org.aspectj.lang.reflect.MethodSignature;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.lang.reflect.Method;
-
-@Component
-@Aspect
-public class AuditLoggingAspect {
-
-    private static final Logger log = LoggerFactory.getLogger(AuditLoggingAspect.class);
-
-    @Autowired
-    AuditLoggingFactory auditLoggingFactory;
-
-    @Around("@annotation(com.pollex.pam.aop.logging.audit.AuditLoggingInject)")
-    public Object around(ProceedingJoinPoint joinPoint) throws Throwable {
-        MethodSignature signature = (MethodSignature) joinPoint.getSignature();
-        Method method = signature.getMethod();
-        AuditLoggingInject auditLoggingInject = method.getAnnotation(AuditLoggingInject.class);
-
-        log.info("run audit logging strategy = {}", auditLoggingInject.type());
-        auditLoggingFactory.getAuditLoggingStrategy(auditLoggingInject.type()).auditLogging(joinPoint);
-
-        return joinPoint.proceed();
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/AuditLoggingInject.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/AuditLoggingInject.java
deleted file mode 100644
index 3f27ded..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/AuditLoggingInject.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.pollex.pam.aop.logging.audit;
-
-
-import java.lang.annotation.*;
-
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface AuditLoggingInject {
-    AuditLoggingType type();
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/AuditLoggingType.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/AuditLoggingType.java
deleted file mode 100644
index 59f795c..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/AuditLoggingType.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.pollex.pam.aop.logging.audit;
-
-public enum AuditLoggingType {
-    CUSTOMER_LOGIN,
-    EDIT_CUSTOMER_DATA,
-    CUSTOMER_CREATE_APPOINTMENT,
-    CUSTOMER_CANCEL_APPOINTMENT,
-    CUSTOMER_EDIT_APPOINTMENT,
-
-    CHECK_APPOINTMENT,
-    CUSTOMER_FILL_SATISFACTION,
-
-    CONSULTANT_LOGIN,
-    EDIT_CONSULTANT_DATA,
-    CONSULTANT_READ_APPOINTMENT,
-    CONSULTANT_CREATE_INTERVIEW,
-    CONSULTANT_SEND_INTERVIEW_NOTICE,
-
-    APPOINTMENT_CLOSE,
-    EDIT_CLOSED_APPOINTMENT,
-    CONSULTANT_SEND_FILL_SATISFACTION_NOTICE,
-
-    DO_NOTHING
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/AuditLoggingFactory.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/AuditLoggingFactory.java
deleted file mode 100644
index 87d1513..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/AuditLoggingFactory.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-@Component
-public class AuditLoggingFactory {
-
-    @Autowired
-    List<AuditLoggingStrategy> strategies;
-
-    @Autowired
-    DoNothingStrategy doNothingStrategy;
-
-    public AuditLoggingStrategy getAuditLoggingStrategy(AuditLoggingType type) {
-        for(AuditLoggingStrategy strategy : strategies) {
-            if(strategy.getType() == type) {
-                return strategy;
-            }
-        }
-
-        return doNothingStrategy;
-    }
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/AuditLoggingStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/AuditLoggingStrategy.java
deleted file mode 100644
index b500621..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/AuditLoggingStrategy.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.stereotype.Component;
-
-@Component
-public interface AuditLoggingStrategy {
-    AuditLoggingType getType();
-    void auditLogging(ProceedingJoinPoint joinPoint);
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/ConsultantReadAppointmentStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/ConsultantReadAppointmentStrategy.java
deleted file mode 100644
index d770121..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/ConsultantReadAppointmentStrategy.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.AppointmentService;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CONSULTANT_READ_APPOINTMENT;
-
-@Component
-@Transactional
-public class ConsultantReadAppointmentStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Autowired
-    AppointmentService appointmentService;
-
-    @Override
-    public AuditLoggingType getType() {
-        return CONSULTANT_READ_APPOINTMENT;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        Long appointmentId = (Long) joinPoint.getArgs()[0];
-        Appointment appointment = appointmentService.findById(appointmentId);
-
-        AuditLogging auditLogging = new AuditLogging();
-        auditLogging.setContent(new Gson().toJson(appointment));
-        auditLogging.setFunctionalType(getType());
-        auditLogging.setCreatedBy(SecurityUtils.getAgentNo());
-
-        auditLoggingRepository.save(auditLogging);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/DoNothingStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/DoNothingStrategy.java
deleted file mode 100644
index 4f602cc..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/DoNothingStrategy.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.stereotype.Component;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.DO_NOTHING;
-
-@Component
-public class DoNothingStrategy implements AuditLoggingStrategy{
-
-    private static final Logger log = LoggerFactory.getLogger(DoNothingStrategy.class);
-
-    @Override
-    public AuditLoggingType getType() {
-        return DO_NOTHING;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        log.info("audit logging do nothing....");
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingAppointmentCloseStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingAppointmentCloseStrategy.java
deleted file mode 100644
index 9b7fc45..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingAppointmentCloseStrategy.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AppointmentClosedInfoRepository;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.AppointmentCloseDTO;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.APPOINTMENT_CLOSE;
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.EDIT_CLOSED_APPOINTMENT;
-
-@Component
-@Transactional
-public class LoggingAppointmentCloseStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Autowired
-    AppointmentClosedInfoRepository appointmentClosedInfoRepository;
-
-    @Override
-    public AuditLoggingType getType() {
-        return APPOINTMENT_CLOSE;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        AppointmentCloseDTO dto = (AppointmentCloseDTO) joinPoint.getArgs()[0];
-        Long appointmentId = dto.getAppointmentId();
-
-        AuditLogging auditLogging = new AuditLogging();
-        auditLogging.setContent(new Gson().toJson(dto));
-        auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-        boolean isAppointmentClosedInfoExist = appointmentClosedInfoRepository.findByAppointmentId(appointmentId).isPresent();
-        if(isAppointmentClosedInfoExist) {
-            auditLogging.setFunctionalType(EDIT_CLOSED_APPOINTMENT);
-        }
-        else {
-            auditLogging.setFunctionalType(APPOINTMENT_CLOSE);
-        }
-
-        auditLoggingRepository.save(auditLogging);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCancelAppointmentStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCancelAppointmentStrategy.java
deleted file mode 100644
index ffcd39e..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCancelAppointmentStrategy.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AppointmentRepository;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.AppointmentDTO;
-import com.pollex.pam.service.mapper.AppointmentMapper;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CUSTOMER_CANCEL_APPOINTMENT;
-
-@Component
-@Transactional
-public class LoggingCancelAppointmentStrategy implements AuditLoggingStrategy {
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Autowired
-    AppointmentRepository appointmentRepository;
-
-    @Autowired
-    AppointmentMapper appointmentMapper;
-
-    @Override
-    public AuditLoggingType getType() {
-        return CUSTOMER_CANCEL_APPOINTMENT;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        Long appointmentId = (Long) joinPoint.getArgs()[0];
-
-        appointmentRepository.findById(appointmentId).ifPresent(appointment -> {
-            AppointmentDTO dto = appointmentMapper.toAppointmentDTO(appointment);
-
-            AuditLogging auditLogging = new AuditLogging();
-            auditLogging.setContent(new Gson().toJson(dto));
-            auditLogging.setFunctionalType(getType());
-            auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-            auditLoggingRepository.save(auditLogging);
-        });
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCheckAppointmentStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCheckAppointmentStrategy.java
deleted file mode 100644
index 240a6fc..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCheckAppointmentStrategy.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AppointmentRepository;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.AppointmentDTO;
-import com.pollex.pam.service.mapper.AppointmentMapper;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CHECK_APPOINTMENT;
-
-@Component
-@Transactional
-public class LoggingCheckAppointmentStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Autowired
-    AppointmentRepository appointmentRepository;
-
-    @Autowired
-    AppointmentMapper appointmentMapper;
-
-    @Override
-    public AuditLoggingType getType() {
-        return CHECK_APPOINTMENT;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        Long appointmentId = (Long) joinPoint.getArgs()[0];
-
-        appointmentRepository.findById(appointmentId).ifPresent(appointment -> {
-            AppointmentDTO dto = appointmentMapper.toAppointmentDTO(appointment);
-
-            AuditLogging auditLogging = new AuditLogging();
-            auditLogging.setContent(new Gson().toJson(dto));
-            auditLogging.setFunctionalType(getType());
-            auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-            auditLoggingRepository.save(auditLogging);
-        });
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingConsultantLoginStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingConsultantLoginStrategy.java
deleted file mode 100644
index 41373a7..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingConsultantLoginStrategy.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.repository.ConsultantRepository;
-import com.pollex.pam.service.ConsultantService;
-import com.pollex.pam.web.rest.vm.EServiceLoginVM;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CONSULTANT_LOGIN;
-
-@Component
-@Transactional
-public class LoggingConsultantLoginStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Autowired
-    ConsultantRepository consultantRepository;
-
-    @Autowired
-    ConsultantService consultantService;
-
-    @Override
-    public AuditLoggingType getType() {
-        return CONSULTANT_LOGIN;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        EServiceLoginVM loginVM = (EServiceLoginVM)joinPoint.getArgs()[0];
-        consultantRepository.findOneByAgentNo(loginVM.getUsername()).ifPresent(consultant -> {
-
-            AuditLogging auditLogging = new AuditLogging();
-            auditLogging.setContent(new Gson().toJson(consultant));
-            auditLogging.setFunctionalType(getType());
-            auditLogging.setCreatedBy(loginVM.getUsername());
-
-            auditLoggingRepository.save(auditLogging);
-        });
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCreateAppointmentStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCreateAppointmentStrategy.java
deleted file mode 100644
index 56402ec..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCreateAppointmentStrategy.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.AppointmentCreateDTO;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-@Component
-@Transactional
-public class LoggingCreateAppointmentStrategy implements AuditLoggingStrategy {
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Override
-    public AuditLoggingType getType() {
-        return AuditLoggingType.CUSTOMER_CREATE_APPOINTMENT;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        AppointmentCreateDTO dto = (AppointmentCreateDTO) joinPoint.getArgs()[0];
-
-        AuditLogging auditLogging = new AuditLogging();
-        auditLogging.setContent(new Gson().toJson(dto));
-        auditLogging.setFunctionalType(getType());
-        auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-        auditLoggingRepository.save(auditLogging);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCreateInterviewStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCreateInterviewStrategy.java
deleted file mode 100644
index 2cf3c11..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCreateInterviewStrategy.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.InterviewRecordDTO;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CONSULTANT_CREATE_INTERVIEW;
-
-@Component
-@Transactional
-public class LoggingCreateInterviewStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Override
-    public AuditLoggingType getType() {
-        return CONSULTANT_CREATE_INTERVIEW;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        InterviewRecordDTO dto = (InterviewRecordDTO) joinPoint.getArgs()[0];
-
-        AuditLogging auditLogging = new AuditLogging();
-        auditLogging.setContent(new Gson().toJson(dto));
-        auditLogging.setFunctionalType(getType());
-        auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-        auditLoggingRepository.save(auditLogging);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCustomerLoginStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCustomerLoginStrategy.java
deleted file mode 100644
index 24d5b6f..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingCustomerLoginStrategy.java
+++ /dev/null
@@ -1,38 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.web.rest.vm.VerifyOtpVM;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CUSTOMER_LOGIN;
-
-@Component
-@Transactional
-public class LoggingCustomerLoginStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Override
-    public AuditLoggingType getType() {
-        return CUSTOMER_LOGIN;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        VerifyOtpVM verifyOtpVM = (VerifyOtpVM) joinPoint.getArgs()[0];
-
-        AuditLogging logging = new AuditLogging();
-        logging.setContent(new Gson().toJson(verifyOtpVM));
-        logging.setFunctionalType(getType());
-        logging.setCreatedBy(verifyOtpVM.getAccount());
-
-        auditLoggingRepository.save(logging);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingEditAppointmentStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingEditAppointmentStrategy.java
deleted file mode 100644
index d86aab7..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingEditAppointmentStrategy.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.AppointmentUpdateDTO;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-@Component
-@Transactional
-public class LoggingEditAppointmentStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Override
-    public AuditLoggingType getType() {
-        return AuditLoggingType.CUSTOMER_EDIT_APPOINTMENT;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        AppointmentUpdateDTO dto = (AppointmentUpdateDTO) joinPoint.getArgs()[0];
-
-        AuditLogging auditLogging = new AuditLogging();
-        auditLogging.setContent(new Gson().toJson(dto));
-        auditLogging.setFunctionalType(getType());
-        auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-        auditLoggingRepository.save(auditLogging);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingEditConsultantStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingEditConsultantStrategy.java
deleted file mode 100644
index 45c4677..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingEditConsultantStrategy.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.GsonBuilder;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.ConsultantEditDTO;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.EDIT_CONSULTANT_DATA;
-
-@Component
-@Transactional
-public class LoggingEditConsultantStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Override
-    public AuditLoggingType getType() {
-        return EDIT_CONSULTANT_DATA;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        ConsultantEditDTO dto = (ConsultantEditDTO) joinPoint.getArgs()[0];
-
-        AuditLogging auditLogging = new AuditLogging();
-        auditLogging.setContent(new GsonBuilder().excludeFieldsWithModifiers().create().toJson(dto));
-        auditLogging.setFunctionalType(getType());
-        auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-        auditLoggingRepository.save(auditLogging);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingEditCustomerStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingEditCustomerStrategy.java
deleted file mode 100644
index a41dcce..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingEditCustomerStrategy.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.CustomerDTO;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.EDIT_CUSTOMER_DATA;
-
-@Component
-@Transactional
-public class LoggingEditCustomerStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Override
-    public AuditLoggingType getType() {
-        return EDIT_CUSTOMER_DATA;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        CustomerDTO dto = (CustomerDTO) joinPoint.getArgs()[0];
-
-        AuditLogging auditLogging = new AuditLogging();
-        auditLogging.setContent(new Gson().toJson(dto));
-        auditLogging.setFunctionalType(getType());
-        auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-        auditLoggingRepository.save(auditLogging);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingFillSatisfactionStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingFillSatisfactionStrategy.java
deleted file mode 100644
index 4c179f9..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingFillSatisfactionStrategy.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.SatisfactionCustomerScoreDTO;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CUSTOMER_FILL_SATISFACTION;
-
-@Component
-@Transactional
-public class LoggingFillSatisfactionStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Override
-    public AuditLoggingType getType() {
-        return CUSTOMER_FILL_SATISFACTION;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        Object arg = joinPoint.getArgs()[0];
-
-        if(arg instanceof List) {
-            List<SatisfactionCustomerScoreDTO> dtos = (List<SatisfactionCustomerScoreDTO>) arg;
-            List<AuditLogging> loggings = dtos.stream().map(dto -> {
-                AuditLogging auditLogging = new AuditLogging();
-                auditLogging.setContent(new Gson().toJson(dto));
-                auditLogging.setFunctionalType(getType());
-                auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-                return auditLogging;
-            }).collect(Collectors.toList());
-
-            auditLoggingRepository.saveAll(loggings);
-        }
-        else {
-            SatisfactionCustomerScoreDTO dto = (SatisfactionCustomerScoreDTO) arg;
-            AuditLogging auditLogging = new AuditLogging();
-            auditLogging.setContent(new Gson().toJson(dto));
-            auditLogging.setFunctionalType(getType());
-            auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-            auditLoggingRepository.save(auditLogging);
-        }
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingSendFillSatisfactionNoticeStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingSendFillSatisfactionNoticeStrategy.java
deleted file mode 100644
index 2b3de65..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingSendFillSatisfactionNoticeStrategy.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CONSULTANT_SEND_FILL_SATISFACTION_NOTICE;
-
-@Component
-@Transactional
-public class LoggingSendFillSatisfactionNoticeStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Override
-    public AuditLoggingType getType() {
-        return CONSULTANT_SEND_FILL_SATISFACTION_NOTICE;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        AuditLogging auditLogging = new AuditLogging();
-        auditLogging.setFunctionalType(getType());
-        auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-        auditLoggingRepository.save(auditLogging);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingSendInterviewNoticeStrategy.java b/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingSendInterviewNoticeStrategy.java
deleted file mode 100644
index 2de3fa5..0000000
--- a/pamapi/src/main/java/com/pollex/pam/aop/logging/audit/strategy/LoggingSendInterviewNoticeStrategy.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.pollex.pam.aop.logging.audit.strategy;
-
-import com.google.gson.Gson;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.AuditLogging;
-import com.pollex.pam.repository.AuditLoggingRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.AppointmentNoticeSendDTO;
-import org.aspectj.lang.ProceedingJoinPoint;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-import org.springframework.transaction.annotation.Transactional;
-
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CONSULTANT_SEND_INTERVIEW_NOTICE;
-
-@Component
-@Transactional
-public class LoggingSendInterviewNoticeStrategy implements AuditLoggingStrategy{
-
-    @Autowired
-    AuditLoggingRepository auditLoggingRepository;
-
-    @Override
-    public AuditLoggingType getType() {
-        return CONSULTANT_SEND_INTERVIEW_NOTICE;
-    }
-
-    @Override
-    public void auditLogging(ProceedingJoinPoint joinPoint) {
-        AppointmentNoticeSendDTO dto = (AppointmentNoticeSendDTO) joinPoint.getArgs()[0];
-
-        AuditLogging auditLogging = new AuditLogging();
-        auditLogging.setContent(new Gson().toJson(dto));
-        auditLogging.setFunctionalType(getType());
-        auditLogging.setCreatedBy(SecurityUtils.getCurrentUserLogin().orElse(null));
-
-        auditLoggingRepository.save(auditLogging);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java
deleted file mode 100644
index 846287c..0000000
--- a/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcess.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.pollex.pam.appointment.process;
-
-import java.time.Instant;
-import java.util.List;
-import java.util.Optional;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.AppointmentClosedInfo;
-import com.pollex.pam.enums.ContactStatusEnum;
-import com.pollex.pam.repository.AppointmentClosedInfoRepository;
-import com.pollex.pam.repository.AppointmentRepository;
-import com.pollex.pam.service.AppointmentClosedInfoService;
-import com.pollex.pam.service.AppointmentService;
-import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
-import com.pollex.pam.service.dto.DoneProcessDTO;
-
-@Service
-public class AppointmentProcess{
-	
-	@Autowired
-	List<AppointmentProcessInterface> processList;
-	
-	@Autowired
-	AppointmentService appointmentService;
-	
-	@Autowired
-	AppointmentRepository appointmentRepository;
-	
-	@Autowired
-	AppointmentClosedInfoRepository appointmentClosedInfoRepository;
-	
-	public void process(AbstractAppointmentProcessDTO dto) {
-		
-		processList.stream().forEach(process ->{
-			if(process.getProcessType() == dto.getContactStatus()) {
-				Optional<AppointmentClosedInfo> closedInfoOP = appointmentClosedInfoRepository.findByAppointmentId(dto.getAppointmentId());
-				if(closedInfoOP.isPresent()) {
-					process.editClosedInfo(dto, closedInfoOP.get());
-				}else {
-					process.create(dto);
-				}
-			}
-		});
-		
-		changeAppointmentCommunicateStatus(dto.getAppointmentId(), dto.getContactStatus());
-	}
-
-	private void changeAppointmentCommunicateStatus(Long appointmentId, ContactStatusEnum contactStatus) {
-		Appointment appointment = appointmentService.findById(appointmentId);
-		appointment.setCommunicateStatus(contactStatus);
-		appointmentRepository.save(appointment);
-	}
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java
deleted file mode 100644
index ee63d5a..0000000
--- a/pamapi/src/main/java/com/pollex/pam/appointment/process/AppointmentProcessInterface.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.pollex.pam.appointment.process;
-
-import com.pollex.pam.domain.AppointmentClosedInfo;
-import com.pollex.pam.enums.ContactStatusEnum;
-import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
-
-public interface AppointmentProcessInterface {
-	
-	AppointmentClosedInfo create(AbstractAppointmentProcessDTO dto);
-	AppointmentClosedInfo editClosedInfo(AbstractAppointmentProcessDTO dto
-			, AppointmentClosedInfo closedInfo);
-	ContactStatusEnum getProcessType();
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java
deleted file mode 100644
index 69dbd24..0000000
--- a/pamapi/src/main/java/com/pollex/pam/appointment/process/ClosedProcess.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.pollex.pam.appointment.process;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.AppointmentClosedInfo;
-import com.pollex.pam.enums.ContactStatusEnum;
-import com.pollex.pam.repository.AppointmentClosedInfoRepository;
-import com.pollex.pam.service.AppointmentClosedInfoService;
-import com.pollex.pam.service.AppointmentService;
-import com.pollex.pam.service.SatisfactionService;
-import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
-import com.pollex.pam.service.dto.ClosedProcessDTO;
-
-@Service
-@Transactional
-public class ClosedProcess implements AppointmentProcessInterface{
-
-	@Autowired
-	AppointmentClosedInfoRepository appointmentClosedInfoRepository;
-
-	@Autowired
-	AppointmentService appointmentService;
-
-	@Autowired
-	AppointmentClosedInfoService appointmentClosedInfoService;
-
-	@Autowired
-	SatisfactionService satisfactionService;
-
-	@Override
-	public AppointmentClosedInfo create(AbstractAppointmentProcessDTO processDTO) {
-		ClosedProcessDTO closeProcess = toClosedProcessDTO(processDTO);
-		AppointmentClosedInfo closedInfo = new AppointmentClosedInfo();
-		BeanUtils.copyProperties(closeProcess, closedInfo);
-		Appointment appointment = appointmentService.findById(processDTO.getAppointmentId());
-		satisfactionService.createAppointmentSatisfaction(appointment);
-		return appointmentClosedInfoRepository.save(closedInfo);
-	}
-
-	private ClosedProcessDTO toClosedProcessDTO(AbstractAppointmentProcessDTO processDTO) {
-		ClosedProcessDTO closeProcess = (ClosedProcessDTO)processDTO;
-		BeanUtils.copyProperties(processDTO, closeProcess);
-		return closeProcess;
-	}
-
-	@Override
-	public ContactStatusEnum getProcessType() {
-		return ContactStatusEnum.CLOSED;
-	}
-
-	@Override
-	public AppointmentClosedInfo editClosedInfo(
-			AbstractAppointmentProcessDTO abstractDTO
-			, AppointmentClosedInfo closedInfo) {
-		ClosedProcessDTO closeProcess =  toClosedProcessDTO(abstractDTO);
-		BeanUtils.copyProperties(closeProcess, closedInfo);
-		return appointmentClosedInfoRepository.save(closedInfo);
-	}
-
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java b/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java
deleted file mode 100644
index f42257e..0000000
--- a/pamapi/src/main/java/com/pollex/pam/appointment/process/DoneProcess.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.pollex.pam.appointment.process;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.AppointmentClosedInfo;
-import com.pollex.pam.enums.ContactStatusEnum;
-import com.pollex.pam.repository.AppointmentClosedInfoRepository;
-import com.pollex.pam.service.AppointmentClosedInfoService;
-import com.pollex.pam.service.AppointmentService;
-import com.pollex.pam.service.SatisfactionService;
-import com.pollex.pam.service.dto.AbstractAppointmentProcessDTO;
-import com.pollex.pam.service.dto.DoneProcessDTO;
-
-@Service
-@Transactional
-public class DoneProcess implements AppointmentProcessInterface{
-
-	@Autowired
-	AppointmentClosedInfoRepository appointmentClosedInfoRepository;
-
-	@Autowired
-	AppointmentClosedInfoService appointmentClosedInfoService;
-
-	@Autowired
-	SatisfactionService satisfactionService;
-
-	@Autowired
-	AppointmentService appointmentService;
-
-	@Override
-	public AppointmentClosedInfo create(AbstractAppointmentProcessDTO processDTO) {
-		DoneProcessDTO doneProcess = toDoneProcessDTO(processDTO);
-		AppointmentClosedInfo closedInfo = new AppointmentClosedInfo();
-		BeanUtils.copyProperties(doneProcess, closedInfo);
-		Appointment appointment = appointmentService.findById(processDTO.getAppointmentId());
-		satisfactionService.createAppointmentSatisfaction(appointment);
-		return appointmentClosedInfoRepository.save(closedInfo);
-	}
-
-	@Override
-	public ContactStatusEnum getProcessType() {
-		return ContactStatusEnum.DONE;
-	}
-
-	@Override
-	public AppointmentClosedInfo editClosedInfo(
-			AbstractAppointmentProcessDTO abstractDTO
-			, AppointmentClosedInfo closedInfo) {
-		DoneProcessDTO doneProcess =  toDoneProcessDTO(abstractDTO);
-		BeanUtils.copyProperties(doneProcess, closedInfo);
-		return appointmentClosedInfoRepository.save(closedInfo);
-	}
-
-	private DoneProcessDTO toDoneProcessDTO(AbstractAppointmentProcessDTO abstractDTO) {
-		DoneProcessDTO doneProcess = (DoneProcessDTO)abstractDTO;
-		BeanUtils.copyProperties(abstractDTO, doneProcess);
-		return doneProcess;
-	}
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java b/pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java
index 60b33ca..d692e29 100644
--- a/pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java
+++ b/pamapi/src/main/java/com/pollex/pam/config/ApplicationProperties.java
@@ -1,6 +1,9 @@
 package com.pollex.pam.config;
 
-import com.pollex.pam.enums.SendEmailMsgMethod;
+import com.pollex.pam.business.config.AppProperties;
+import com.pollex.pam.business.config.SendEmailProperties;
+import com.pollex.pam.business.config.SendSMSProperties;
+import com.pollex.pam.business.enums.SendEmailMsgMethod;
 import org.springframework.boot.context.properties.ConfigurationProperties;
 
 /**
@@ -10,7 +13,7 @@
  * See {@link tech.jhipster.config.JHipsterProperties} for a good example.
  */
 @ConfigurationProperties(prefix = "application", ignoreUnknownFields = false)
-public class ApplicationProperties {
+public class ApplicationProperties implements AppProperties {
 
     private boolean mockLogin;
     private String otpWebServiceUrl;
@@ -20,8 +23,8 @@
     private String eServiceLoginFunc;
     private String eServiceLoginSys;
     private String frontEndDomain;
-    private SMS sms;
-    private Email email;
+    private SendSMSProperties sms;
+    private SendEmailProperties email;
     private String fileFolderPath;
 
     public boolean isMockLogin() {
@@ -88,126 +91,22 @@
         this.frontEndDomain = frontEndDomain;
     }
 
-    public SMS getSms() {
+    public SendSMSProperties getSms() {
         return sms;
     }
 
-    public void setSms(SMS sms) {
+    public void setSms(SendSMSProperties sms) {
         this.sms = sms;
     }
 
-    public Email getEmail() {
+    public SendEmailProperties getEmail() {
         return email;
     }
 
-    public void setEmail(Email email) {
+    public void setEmail(SendEmailProperties email) {
         this.email = email;
     }
 
-    public static class SMS {
-        private String url;
-        private String sourceCode;
-        private String sender;
-        private String smsType;
-        private String subject;
-        private boolean sendNotifyMsg;
-
-        public String getUrl() {
-            return url;
-        }
-
-        public void setUrl(String url) {
-            this.url = url;
-        }
-
-        public String getSourceCode() {
-            return sourceCode;
-        }
-
-        public void setSourceCode(String sourceCode) {
-            this.sourceCode = sourceCode;
-        }
-
-        public String getSender() {
-            return sender;
-        }
-
-        public void setSender(String sender) {
-            this.sender = sender;
-        }
-
-        public String getSmsType() {
-            return smsType;
-        }
-
-        public void setSmsType(String smsType) {
-            this.smsType = smsType;
-        }
-
-        public String getSubject() {
-            return subject;
-        }
-
-        public void setSubject(String subject) {
-            this.subject = subject;
-        }
-
-        public boolean isSendNotifyMsg() {
-            return sendNotifyMsg;
-        }
-
-        public void setSendNotifyMsg(boolean sendNotifyMsg) {
-            this.sendNotifyMsg = sendNotifyMsg;
-        }
-    }
-
-    public static class Email {
-        private String url;
-        private String functionId;
-        private String senderEmail;
-        private boolean sendNotifyMsg;
-        private SendEmailMsgMethod method;
-
-        public String getUrl() {
-            return url;
-        }
-
-        public void setUrl(String url) {
-            this.url = url;
-        }
-
-        public String getFunctionId() {
-            return functionId;
-        }
-
-        public void setFunctionId(String functionId) {
-            this.functionId = functionId;
-        }
-
-        public String getSenderEmail() {
-            return senderEmail;
-        }
-
-        public void setSenderEmail(String senderEmail) {
-            this.senderEmail = senderEmail;
-        }
-
-        public boolean isSendNotifyMsg() {
-            return sendNotifyMsg;
-        }
-
-        public void setSendNotifyMsg(boolean sendNotifyMsg) {
-            this.sendNotifyMsg = sendNotifyMsg;
-        }
-
-        public SendEmailMsgMethod getMethod() {
-            return method;
-        }
-
-        public void setMethod(SendEmailMsgMethod method) {
-            this.method = method;
-        }
-    }
 	public String getFileFolderPath() {
 		return fileFolderPath;
 	}
diff --git a/pamapi/src/main/java/com/pollex/pam/config/CacheConfiguration.java b/pamapi/src/main/java/com/pollex/pam/config/CacheConfiguration.java
index 980373c..12bbec4 100644
--- a/pamapi/src/main/java/com/pollex/pam/config/CacheConfiguration.java
+++ b/pamapi/src/main/java/com/pollex/pam/config/CacheConfiguration.java
@@ -43,11 +43,11 @@
     @Bean
     public JCacheManagerCustomizer cacheManagerCustomizer() {
         return cm -> {
-            createCache(cm, com.pollex.pam.repository.UserRepository.USERS_BY_LOGIN_CACHE);
-            createCache(cm, com.pollex.pam.repository.UserRepository.USERS_BY_EMAIL_CACHE);
-            createCache(cm, com.pollex.pam.domain.User.class.getName());
-            createCache(cm, com.pollex.pam.domain.Authority.class.getName());
-            createCache(cm, com.pollex.pam.domain.User.class.getName() + ".authorities");
+            createCache(cm, com.pollex.pam.business.repository.UserRepository.USERS_BY_LOGIN_CACHE);
+            createCache(cm, com.pollex.pam.business.repository.UserRepository.USERS_BY_EMAIL_CACHE);
+            createCache(cm, com.pollex.pam.business.domain.User.class.getName());
+            createCache(cm, com.pollex.pam.business.domain.Authority.class.getName());
+            createCache(cm, com.pollex.pam.business.domain.User.class.getName() + ".authorities");
             // jhipster-needle-ehcache-add-entry
         };
     }
diff --git a/pamapi/src/main/java/com/pollex/pam/config/Constants.java b/pamapi/src/main/java/com/pollex/pam/config/Constants.java
deleted file mode 100644
index 87dd25b..0000000
--- a/pamapi/src/main/java/com/pollex/pam/config/Constants.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.pollex.pam.config;
-
-/**
- * Application constants.
- */
-public final class Constants {
-
-    // Regex for acceptable logins
-    public static final String LOGIN_REGEX = "^(?>[a-zA-Z0-9!$&*+=?^_`{|}~.-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*)|(?>[_.@A-Za-z0-9-]+)$";
-
-    public static final String SYSTEM = "system";
-    public static final String DEFAULT_LANGUAGE = "zh-tw";
-
-    /**
-     * �閰勗�mail�撱箇���(T)敺�憭抵�������
-     * �����摰2
-     */
-    public static final int APPOINTMENT_PENDING_PHONE_INTERVAL = 2;
-    public static final int APPOINTMENT_PENDING_EMAIL_INTERVAL = 2;
-
-    /**
-     * �閰勗�mail�撱箇���(T)敺�憭拇�◤閬������嚗憭拇甈⊥����策憿批��
-     * �敺�憭�(T+N+1)嚗停���甈∠策摰X�� 閰脤“���敹�瘜������閬���
-     */
-    public static final int APPOINTMENT_EXPIRING_PHONE_INTERVAL = APPOINTMENT_PENDING_PHONE_INTERVAL + 1;
-    public static final int APPOINTMENT_EXPIRING_EMAIL_INTERVAL = APPOINTMENT_PENDING_EMAIL_INTERVAL + 1;
-
-    /**
-     * �摰X��活���
-     */
-    public static final int SEND_EXPIRING_NOTIFY_LIMIT = 1;
-
-    public static final String SPRING_PROFILE_POLLEX_DEVELOPMENT = "pollex";
-
-    private Constants() {}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/config/DatabaseConfiguration.java b/pamapi/src/main/java/com/pollex/pam/config/DatabaseConfiguration.java
index 02439f2..5746359 100644
--- a/pamapi/src/main/java/com/pollex/pam/config/DatabaseConfiguration.java
+++ b/pamapi/src/main/java/com/pollex/pam/config/DatabaseConfiguration.java
@@ -1,16 +1,12 @@
 package com.pollex.pam.config;
 
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
 import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
-import tech.jhipster.config.JHipsterConstants;
 
 @Configuration
-@EnableJpaRepositories({ "com.pollex.pam.repository" })
+@EnableJpaRepositories({"com.pollex.pam.business.repository"})
 @EnableJpaAuditing(auditorAwareRef = "springSecurityAuditorAware")
 @EnableTransactionManagement
 public class DatabaseConfiguration {}
diff --git a/pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java b/pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java
index 0b995e0..a8ee0cf 100644
--- a/pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java
+++ b/pamapi/src/main/java/com/pollex/pam/config/SecurityConfiguration.java
@@ -1,6 +1,6 @@
 package com.pollex.pam.config;
 
-import com.pollex.pam.security.*;
+import com.pollex.pam.business.security.AuthoritiesConstants;
 import com.pollex.pam.security.jwt.*;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Import;
diff --git a/pamapi/src/main/java/com/pollex/pam/config/WebsocketConfiguration.java b/pamapi/src/main/java/com/pollex/pam/config/WebsocketConfiguration.java
index 45e29b6..871056d 100644
--- a/pamapi/src/main/java/com/pollex/pam/config/WebsocketConfiguration.java
+++ b/pamapi/src/main/java/com/pollex/pam/config/WebsocketConfiguration.java
@@ -1,6 +1,6 @@
 package com.pollex.pam.config;
 
-import com.pollex.pam.security.AuthoritiesConstants;
+import com.pollex.pam.business.security.AuthoritiesConstants;
 import java.security.Principal;
 import java.util.*;
 import org.springframework.context.annotation.Bean;
diff --git a/pamapi/src/main/java/com/pollex/pam/config/WebsocketSecurityConfiguration.java b/pamapi/src/main/java/com/pollex/pam/config/WebsocketSecurityConfiguration.java
index 30afbb2..0ccc2f4 100644
--- a/pamapi/src/main/java/com/pollex/pam/config/WebsocketSecurityConfiguration.java
+++ b/pamapi/src/main/java/com/pollex/pam/config/WebsocketSecurityConfiguration.java
@@ -1,6 +1,6 @@
 package com.pollex.pam.config;
 
-import com.pollex.pam.security.AuthoritiesConstants;
+import com.pollex.pam.business.security.AuthoritiesConstants;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.messaging.simp.SimpMessageType;
 import org.springframework.security.config.annotation.web.messaging.MessageSecurityMetadataSourceRegistry;
diff --git a/pamapi/src/main/java/com/pollex/pam/consts/SeniorityQueryConst.java b/pamapi/src/main/java/com/pollex/pam/consts/SeniorityQueryConst.java
deleted file mode 100644
index fc57ae7..0000000
--- a/pamapi/src/main/java/com/pollex/pam/consts/SeniorityQueryConst.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.pollex.pam.consts;
-
-public class SeniorityQueryConst {
-    public static final String SENIOR = "SENIOR";
-    public static final String YOUNG = "YOUNG";
-    public static final String UNLIMITED = "UNLIMITED";
-
-    private SeniorityQueryConst() {}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/AbstractAuditingEntity.java b/pamapi/src/main/java/com/pollex/pam/domain/AbstractAuditingEntity.java
deleted file mode 100644
index c89d1d2..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/AbstractAuditingEntity.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.pollex.pam.domain;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import java.io.Serializable;
-import java.time.Instant;
-import javax.persistence.Column;
-import javax.persistence.EntityListeners;
-import javax.persistence.MappedSuperclass;
-import org.springframework.data.annotation.CreatedBy;
-import org.springframework.data.annotation.CreatedDate;
-import org.springframework.data.annotation.LastModifiedBy;
-import org.springframework.data.annotation.LastModifiedDate;
-import org.springframework.data.jpa.domain.support.AuditingEntityListener;
-
-/**
- * Base abstract class for entities which will hold definitions for created, last modified, created by,
- * last modified by attributes.
- */
-@MappedSuperclass
-@EntityListeners(AuditingEntityListener.class)
-public abstract class AbstractAuditingEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @CreatedBy
-    @Column(name = "created_by", nullable = false, length = 50, updatable = false)
-    @JsonIgnore
-    private String createdBy;
-
-    @CreatedDate
-    @Column(name = "created_date", updatable = false)
-    @JsonIgnore
-    private Instant createdDate = Instant.now();
-
-    @LastModifiedBy
-    @Column(name = "last_modified_by", length = 50)
-    @JsonIgnore
-    private String lastModifiedBy;
-
-    @LastModifiedDate
-    @Column(name = "last_modified_date")
-    @JsonIgnore
-    private Instant lastModifiedDate = Instant.now();
-
-    public String getCreatedBy() {
-        return createdBy;
-    }
-
-    public void setCreatedBy(String createdBy) {
-        this.createdBy = createdBy;
-    }
-
-    public Instant getCreatedDate() {
-        return createdDate;
-    }
-
-    public void setCreatedDate(Instant createdDate) {
-        this.createdDate = createdDate;
-    }
-
-    public String getLastModifiedBy() {
-        return lastModifiedBy;
-    }
-
-    public void setLastModifiedBy(String lastModifiedBy) {
-        this.lastModifiedBy = lastModifiedBy;
-    }
-
-    public Instant getLastModifiedDate() {
-        return lastModifiedDate;
-    }
-
-    public void setLastModifiedDate(Instant lastModifiedDate) {
-        this.lastModifiedDate = lastModifiedDate;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java b/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java
deleted file mode 100644
index 76d30ca..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/Appointment.java
+++ /dev/null
@@ -1,285 +0,0 @@
-package com.pollex.pam.domain;
-
-import java.io.Serializable;
-import java.time.Instant;
-import java.util.List;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EntityListeners;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-
-import org.springframework.data.annotation.CreatedDate;
-import org.springframework.data.annotation.LastModifiedDate;
-import org.springframework.data.jpa.domain.support.AuditingEntityListener;
-
-import com.pollex.pam.enums.AppointmentStatusEnum;
-import com.pollex.pam.enums.ContactStatusEnum;
-
-@EntityListeners(AuditingEntityListener.class)
-@Entity
-@Table(name = "appointment")
-public class Appointment implements Serializable {
-
-	/**
-	 *
-	 */
-	private static final long serialVersionUID = 1L;
-
-	@Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-	@Column(name = "phone")
-    private String phone;
-
-	@Column(name = "email")
-    private String email;
-
-	@Column(name = "contact_type")
-    private String contactType;
-
-	@Column(name = "gender")
-    private String gender;
-
-	@Column(name = "age")
-    private String age;
-
-	@Column(name = "job")
-    private String job;
-
-	@Column(name = "requirement")
-    private String requirement;
-
-	@Enumerated(EnumType.STRING)
-	@Column(name = "communicate_status")
-    private ContactStatusEnum communicateStatus;
-
-	@Column(name = "hope_contact_time")
-    private String hopeContactTime;
-
-	@Column(name = "other_requirement")
-    private String otherRequirement;
-
-    @CreatedDate
-	@Column(name = "appointment_date", updatable = false)
-    private Instant appointmentDate = Instant.now();
-
-    @Column(name = "last_modified_date")
-    @LastModifiedDate
-    private Instant lastModifiedDate = Instant.now();
-
-	@Column(name = "agent_no")
-    private String agentNo;
-
-	@Column(name = "customer_id")
-    private Long customerId;
-
-    @Column(name = "consultant_view_time")
-    private Instant consultantViewTime;
-
-    @Column(name = "consultant_read_time")
-    private Instant consultantReadTime;
-
-    @Column(name = "contact_time")
-    private Instant contactTime;
-
-    @Enumerated(value = EnumType.STRING)
-    @Column(name = "status")
-    private AppointmentStatusEnum status;
-    
-    @JoinColumn(name = "appointment_id")
-    @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.REMOVE)
-    private List<AppointmentMemo> appointmentMemoList;
-    
-//    @OneToOne(cascade = CascadeType.REMOVE,fetch=FetchType.EAGER)
-////    @JoinColumn(name = "form_authority_id", referencedColumnName = "id")
-//    @JoinColumn(name = "appointment_id", referencedColumnName = "id")
-//    private AppointmentClosedInfo closedInfo;
-    
-//    @OneToOne(cascade = CascadeType.REMOVE
-//    		, mappedBy = "appointment", fetch=FetchType.LAZY)
-//    private AppointmentClosedInfo closedInfo;
-
-	public Long getId() {
-		return id;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public String getPhone() {
-		return phone;
-	}
-
-	public void setPhone(String phone) {
-		this.phone = phone;
-	}
-
-	public String getEmail() {
-		return email;
-	}
-
-	public void setEmail(String email) {
-		this.email = email;
-	}
-
-	public String getContactType() {
-		return contactType;
-	}
-
-	public void setContactType(String contactType) {
-		this.contactType = contactType;
-	}
-
-	public String getGender() {
-		return gender;
-	}
-
-	public void setGender(String gender) {
-		this.gender = gender;
-	}
-
-	public String getAge() {
-		return age;
-	}
-
-	public void setAge(String age) {
-		this.age = age;
-	}
-
-	public String getJob() {
-		return job;
-	}
-
-	public void setJob(String job) {
-		this.job = job;
-	}
-
-	public String getRequirement() {
-		return requirement;
-	}
-
-	public void setRequirement(String requirement) {
-		this.requirement = requirement;
-	}
-
-	public String getHopeContactTime() {
-		return hopeContactTime;
-	}
-
-	public void setHopeContactTime(String hopeContactTime) {
-		this.hopeContactTime = hopeContactTime;
-	}
-
-	public String getOtherRequirement() {
-		return otherRequirement;
-	}
-
-	public void setOtherRequirement(String otherRequirement) {
-		this.otherRequirement = otherRequirement;
-	}
-
-	public Instant getAppointmentDate() {
-		return appointmentDate;
-	}
-
-	public void setAppointmentDate(Instant appointmentDate) {
-		this.appointmentDate = appointmentDate;
-	}
-
-	public String getAgentNo() {
-		return agentNo;
-	}
-
-	public void setAgentNo(String agentNo) {
-		this.agentNo = agentNo;
-	}
-
-	public ContactStatusEnum getCommunicateStatus() {
-		return communicateStatus;
-	}
-
-	public void setCommunicateStatus(ContactStatusEnum communicateStatus) {
-		this.communicateStatus = communicateStatus;
-	}
-
-	public Long getCustomerId() {
-		return customerId;
-	}
-
-	public void setCustomerId(Long customerId) {
-		this.customerId = customerId;
-	}
-
-    public Instant getConsultantViewTime() {
-        return consultantViewTime;
-    }
-
-    public void setConsultantViewTime(Instant consultantViewTime) {
-        this.consultantViewTime = consultantViewTime;
-    }
-
-    public Instant getConsultantReadTime() {
-        return consultantReadTime;
-    }
-
-    public void setConsultantReadTime(Instant consultantReadTime) {
-        this.consultantReadTime = consultantReadTime;
-    }
-
-    public Instant getContactTime() {
-        return contactTime;
-    }
-
-    public void setContactTime(Instant markCommunicateTime) {
-        this.contactTime = markCommunicateTime;
-    }
-
-    public AppointmentStatusEnum getStatus() {
-        return status;
-    }
-
-    public void setStatus(AppointmentStatusEnum status) {
-        this.status = status;
-    }
-
-    public Instant getLastModifiedDate() {
-        return lastModifiedDate;
-    }
-
-    public void setLastModifiedDate(Instant lastModifiedDate) {
-        this.lastModifiedDate = lastModifiedDate;
-    }
-
-	public List<AppointmentMemo> getAppointmentMemoList() {
-		return appointmentMemoList;
-	}
-
-	public void setAppointmentMemoList(List<AppointmentMemo> appointmentMemoList) {
-		this.appointmentMemoList = appointmentMemoList;
-	}
-
-//	public AppointmentClosedInfo getClosedInfo() {
-//		return closedInfo;
-//	}
-//
-//	public void setClosedInfo(AppointmentClosedInfo closedInfo) {
-//		this.closedInfo = closedInfo;
-//	}
-    
-    
-    
-    
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentClosedInfo.java b/pamapi/src/main/java/com/pollex/pam/domain/AppointmentClosedInfo.java
deleted file mode 100644
index bc16a7a..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentClosedInfo.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.pollex.pam.domain;
-
-import java.io.Serializable;
-import java.util.Date;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "appointment_closed_info")
-public class AppointmentClosedInfo implements Serializable {
-	
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	@Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-	
-	@Column(name = "policyholder_identity_id")
-    private String policyholderIdentityId;
-    
-    @Column(name = "plan_code")
-	private String planCode;
-    
-    @Column(name = "policy_entry_date")
-	private Date policyEntryDate;
-    
-    @Column(name = "remark")
-	private String remark;
-    
-    @Column(name = "closed_reason")
-	private String closedReason;
-    
-    @Column(name = "closed_other_reason")
-	private String closedOtherReason;
-    
-    @Column(name = "appointment_id")
-	private Long appointmentId;
-
-	public Long getId() {
-		return id;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public String getPolicyholderIdentityId() {
-		return policyholderIdentityId;
-	}
-
-	public void setPolicyholderIdentityId(String policyholderIdentityId) {
-		this.policyholderIdentityId = policyholderIdentityId;
-	}
-
-	public String getPlanCode() {
-		return planCode;
-	}
-
-	public void setPlanCode(String planCode) {
-		this.planCode = planCode;
-	}
-
-	public Date getPolicyEntryDate() {
-		return policyEntryDate;
-	}
-
-	public void setPolicyEntryDate(Date policyEntryDate) {
-		this.policyEntryDate = policyEntryDate;
-	}
-
-	public String getRemark() {
-		return remark;
-	}
-
-	public void setRemark(String remark) {
-		this.remark = remark;
-	}
-
-	public String getClosedReason() {
-		return closedReason;
-	}
-
-	public void setClosedReason(String closedReason) {
-		this.closedReason = closedReason;
-	}
-
-	public String getClosedOtherReason() {
-		return closedOtherReason;
-	}
-
-	public void setClosedOtherReason(String closedOtherReason) {
-		this.closedOtherReason = closedOtherReason;
-	}
-
-	public Long getAppointmentId() {
-		return appointmentId;
-	}
-
-	public void setAppointmentId(Long appointmentId) {
-		this.appointmentId = appointmentId;
-	}
-    
-    
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentCustomerView.java b/pamapi/src/main/java/com/pollex/pam/domain/AppointmentCustomerView.java
deleted file mode 100644
index bb2a477..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentCustomerView.java
+++ /dev/null
@@ -1,265 +0,0 @@
-package com.pollex.pam.domain;
-
-import java.io.Serializable;
-import java.time.Instant;
-import java.util.List;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.FetchType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-
-import com.pollex.pam.enums.AppointmentStatusEnum;
-import com.pollex.pam.enums.ContactStatusEnum;
-
-@Entity
-@Table(name = "appointment_customer_view")
-public class AppointmentCustomerView implements Serializable {
-
-	/**
-	 *
-	 */
-	private static final long serialVersionUID = 1L;
-
-	@Column(name = "appointment_id")
-	@Id
-	private Long id;
-
-	@Column(name = "phone")
-    private String phone;
-
-	@Column(name = "email")
-    private String email;
-
-	@Column(name = "contact_type")
-    private String contactType;
-
-	@Column(name = "gender")
-    private String gender;
-
-	@Column(name = "age")
-    private String age;
-
-	@Column(name = "job")
-    private String job;
-
-	@Column(name = "requirement")
-    private String requirement;
-
-	@Enumerated(EnumType.STRING)
-	@Column(name = "communicate_status")
-    private ContactStatusEnum communicateStatus;
-
-	@Column(name = "hope_contact_time")
-    private String hopeContactTime;
-
-	@Column(name = "other_requirement")
-    private String otherRequirement;
-
-	@Column(name = "appointment_date")
-    private Instant appointmentDate;
-
-	@Column(name = "agent_no")
-    private String agentNo;
-
-	@Column(name = "customer_id")
-    private Long customerId;
-
-    @Column(name = "consultant_view_time")
-    private Instant consultantViewTime;
-
-    @Column(name = "consultant_read_time")
-    private Instant consultantReadTime;
-
-    @Column(name = "contact_time")
-    private Instant contactTime;
-
-    @Column(name = "last_modified_date")
-    private Instant lastModifiedDate;
-
-    @Column(name = "name")
-    private String name;
-
-    @Enumerated(value = EnumType.STRING)
-    @Column(name = "status")
-    private AppointmentStatusEnum status;
-    
-    @JoinColumn(name = "appointment_id")
-    @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
-    private List<AppointmentMemo> appointmentMemoList;
-
-    public Long getId() {
-        return id;
-    }
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public String getPhone() {
-		return phone;
-	}
-
-	public void setPhone(String phone) {
-		this.phone = phone;
-	}
-
-	public String getEmail() {
-		return email;
-	}
-
-	public void setEmail(String email) {
-		this.email = email;
-	}
-
-	public String getContactType() {
-		return contactType;
-	}
-
-	public void setContactType(String contactType) {
-		this.contactType = contactType;
-	}
-
-	public String getGender() {
-		return gender;
-	}
-
-	public void setGender(String gender) {
-		this.gender = gender;
-	}
-
-	public String getAge() {
-		return age;
-	}
-
-	public void setAge(String age) {
-		this.age = age;
-	}
-
-	public String getJob() {
-		return job;
-	}
-
-	public void setJob(String job) {
-		this.job = job;
-	}
-
-	public String getRequirement() {
-		return requirement;
-	}
-
-	public void setRequirement(String requirement) {
-		this.requirement = requirement;
-	}
-
-	public ContactStatusEnum getCommunicateStatus() {
-		return communicateStatus;
-	}
-
-	public void setCommunicateStatus(ContactStatusEnum communicateStatus) {
-		this.communicateStatus = communicateStatus;
-	}
-
-	public String getHopeContactTime() {
-		return hopeContactTime;
-	}
-
-	public void setHopeContactTime(String hopeContactTime) {
-		this.hopeContactTime = hopeContactTime;
-	}
-
-	public String getOtherRequirement() {
-		return otherRequirement;
-	}
-
-	public void setOtherRequirement(String otherRequirement) {
-		this.otherRequirement = otherRequirement;
-	}
-
-	public Instant getAppointmentDate() {
-		return appointmentDate;
-	}
-
-	public void setAppointmentDate(Instant appointmentDate) {
-		this.appointmentDate = appointmentDate;
-	}
-
-	public String getAgentNo() {
-		return agentNo;
-	}
-
-	public void setAgentNo(String agentNo) {
-		this.agentNo = agentNo;
-	}
-
-	public Long getCustomerId() {
-		return customerId;
-	}
-
-	public void setCustomerId(Long customerId) {
-		this.customerId = customerId;
-	}
-
-    public Instant getConsultantViewTime() {
-        return consultantViewTime;
-    }
-
-    public void setConsultantViewTime(Instant consultantViewTime) {
-        this.consultantViewTime = consultantViewTime;
-    }
-
-    public Instant getConsultantReadTime() {
-        return consultantReadTime;
-    }
-
-    public void setConsultantReadTime(Instant consultantReadTime) {
-        this.consultantReadTime = consultantReadTime;
-    }
-
-    public Instant getLastModifiedDate() {
-        return lastModifiedDate;
-    }
-
-    public void setLastModifiedDate(Instant lastModifiedDate) {
-        this.lastModifiedDate = lastModifiedDate;
-    }
-
-    public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-    public Instant getContactTime() {
-        return contactTime;
-    }
-
-    public void setContactTime(Instant markCommunicateTime) {
-        this.contactTime = markCommunicateTime;
-    }
-    public AppointmentStatusEnum getStatus() {
-        return status;
-    }
-
-    public void setStatus(AppointmentStatusEnum status) {
-        this.status = status;
-    }
-
-	public List<AppointmentMemo> getAppointmentMemoList() {
-		return appointmentMemoList;
-	}
-
-	public void setAppointmentMemoList(List<AppointmentMemo> appointmentMemoList) {
-		this.appointmentMemoList = appointmentMemoList;
-	}
-    
-    
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentExpiringNotifyRecord.java b/pamapi/src/main/java/com/pollex/pam/domain/AppointmentExpiringNotifyRecord.java
deleted file mode 100644
index 5f2f8f6..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentExpiringNotifyRecord.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.pollex.pam.domain;
-
-import javax.persistence.*;
-import java.io.Serializable;
-import java.time.Instant;
-
-@Entity
-@Table(name = "appointment_expiring_notify_record")
-public class AppointmentExpiringNotifyRecord implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    @Column(name = "appointment_id")
-    private Long appointmentId;
-
-    @Column(name = "send_time")
-    private Instant sendTime;
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getAppointmentId() {
-        return appointmentId;
-    }
-
-    public void setAppointmentId(Long appointmentId) {
-        this.appointmentId = appointmentId;
-    }
-
-    public Instant getSendTime() {
-        return sendTime;
-    }
-
-    public void setSendTime(Instant sendTime) {
-        this.sendTime = sendTime;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentMemo.java b/pamapi/src/main/java/com/pollex/pam/domain/AppointmentMemo.java
deleted file mode 100644
index 1b6299a..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentMemo.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.pollex.pam.domain;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-@Entity
-@Table(name = "appointment_memo")
-public class AppointmentMemo extends AbstractAuditingEntity implements Serializable {
-	
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	
-	@Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-	
-	@Column(name = "content")
-    private String content;
-	
-	@Column(name = "appointment_id")
-    private Long appointmentId;
-
-	public Long getId() {
-		return id;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public String getContent() {
-		return content;
-	}
-
-	public void setContent(String content) {
-		this.content = content;
-	}
-
-	public Long getAppointmentId() {
-		return appointmentId;
-	}
-
-	public void setAppointmentId(Long appointmentId) {
-		this.appointmentId = appointmentId;
-	}
-	
-	
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentNoticeLog.java b/pamapi/src/main/java/com/pollex/pam/domain/AppointmentNoticeLog.java
deleted file mode 100644
index 10c6173..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/AppointmentNoticeLog.java
+++ /dev/null
@@ -1,135 +0,0 @@
-package com.pollex.pam.domain;
-
-import java.io.Serializable;
-import java.time.Instant;
-import java.util.Date;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import org.springframework.data.annotation.CreatedBy;
-import org.springframework.data.annotation.CreatedDate;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-@Entity
-@Table(name = "appointment_notice_log")
-public class AppointmentNoticeLog implements Serializable {
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	
-	@Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-	@Column(name = "phone")
-    private String phone;
-
-	@Column(name = "email")
-    private String email;
-	
-	@Column(name = "appointment_id")
-    private Long appointmentId;
-	
-//	@Column(name = "type")
-//    private String type;
-	
-	@Column(name = "content")
-    private String content;
-	
-//	@CreatedBy
-//    @Column(name = "created_by", nullable = false, length = 50, updatable = false)
-//    @JsonIgnore
-//    private String createdBy;
-
-    @CreatedDate
-    @Column(name = "created_date", updatable = false)
-    private Instant createdDate = Instant.now();
-    
-    @Column(name = "interview_date")
-    private Date interviewDate;
-
-	public Long getId() {
-		return id;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public String getPhone() {
-		return phone;
-	}
-
-	public void setPhone(String phone) {
-		this.phone = phone;
-	}
-
-	public String getEmail() {
-		return email;
-	}
-
-	public void setEmail(String email) {
-		this.email = email;
-	}
-
-	public Long getAppointmentId() {
-		return appointmentId;
-	}
-
-	public void setAppointmentId(Long appointmentId) {
-		this.appointmentId = appointmentId;
-	}
-
-//	public String getType() {
-//		return type;
-//	}
-//
-//	public void setType(String type) {
-//		this.type = type;
-//	}
-
-	public String getContent() {
-		return content;
-	}
-
-	public void setContent(String content) {
-		this.content = content;
-	}
-
-//	public String getCreatedBy() {
-//		return createdBy;
-//	}
-//
-//	public void setCreatedBy(String createdBy) {
-//		this.createdBy = createdBy;
-//	}
-
-	public Instant getCreatedDate() {
-		return createdDate;
-	}
-
-	public void setCreatedDate(Instant createdDate) {
-		this.createdDate = createdDate;
-	}
-
-	public Date getInterviewDate() {
-		return interviewDate;
-	}
-
-	public void setInterviewDate(Date interviewDate) {
-		this.interviewDate = interviewDate;
-	}
-	
-    
-    
-    
-    
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/AuditLogging.java b/pamapi/src/main/java/com/pollex/pam/domain/AuditLogging.java
deleted file mode 100644
index 0084c6c..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/AuditLogging.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package com.pollex.pam.domain;
-
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import org.springframework.data.annotation.CreatedBy;
-import org.springframework.data.annotation.CreatedDate;
-import org.springframework.data.jpa.domain.support.AuditingEntityListener;
-
-import javax.persistence.*;
-import java.io.Serializable;
-import java.time.Instant;
-
-@EntityListeners(AuditingEntityListener.class)
-@Entity
-@Table(name = "audit_logging")
-public class AuditLogging implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-    @Enumerated(EnumType.STRING)
-    @Column(name = "functional_type")
-    private AuditLoggingType functionalType;
-
-    @Column(name = "content")
-    private String content;
-
-    @Column(name = "created_by", updatable = false)
-    private String createdBy;
-
-    @CreatedDate
-    @Column(name = "created_date", updatable = false)
-    private Instant createdDate;
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public AuditLoggingType getFunctionalType() {
-        return functionalType;
-    }
-
-    public void setFunctionalType(AuditLoggingType functionalType) {
-        this.functionalType = functionalType;
-    }
-
-    public String getContent() {
-        return content;
-    }
-
-    public void setContent(String content) {
-        this.content = content;
-    }
-
-    public String getCreatedBy() {
-        return createdBy;
-    }
-
-    public void setCreatedBy(String createdBy) {
-        this.createdBy = createdBy;
-    }
-
-    public Instant getCreatedDate() {
-        return createdDate;
-    }
-
-    public void setCreatedDate(Instant createdDate) {
-        this.createdDate = createdDate;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/Authority.java b/pamapi/src/main/java/com/pollex/pam/domain/Authority.java
deleted file mode 100644
index c393e2b..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/Authority.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.pollex.pam.domain;
-
-import java.io.Serializable;
-import java.util.Objects;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-import org.hibernate.annotations.Cache;
-import org.hibernate.annotations.CacheConcurrencyStrategy;
-
-/**
- * An authority (a security role) used by Spring Security.
- */
-@Entity
-@Table(name = "jhi_authority")
-@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
-public class Authority implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @NotNull
-    @Size(max = 50)
-    @Id
-    @Column(length = 50)
-    private String name;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (!(o instanceof Authority)) {
-            return false;
-        }
-        return Objects.equals(name, ((Authority) o).name);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(name);
-    }
-
-    // prettier-ignore
-    @Override
-    public String toString() {
-        return "Authority{" +
-            "name='" + name + '\'' +
-            "}";
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/Consultant.java b/pamapi/src/main/java/com/pollex/pam/domain/Consultant.java
deleted file mode 100644
index f3552b3..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/Consultant.java
+++ /dev/null
@@ -1,294 +0,0 @@
-package com.pollex.pam.domain;
-
-import com.pollex.pam.enums.ConsultantStatusEnum;
-import com.pollex.pam.enums.GenderEnum;
-
-import javax.persistence.*;
-import java.io.Serializable;
-import java.time.Instant;
-
-@Entity
-@Table(name = "consultant")
-public class Consultant extends AbstractAuditingEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
-    @SequenceGenerator(name = "sequenceGenerator")
-    private Long id;
-
-    @Column(name = "agent_no", unique = true)
-    private String agentNo;
-
-    @Column(name = "name")
-    private String name;
-
-    @Column(name = "photo_path")
-    private String photoPath;
-
-    @Column(name = "expertise")
-    private String expertise;
-
-    @Column(name = "avg_score")
-    private Float avgScore;
-
-    @Column(name = "title")
-    private String title;
-
-    @Column(name = "role")
-    private String role;
-
-    @Column(name = "serve_area")
-    private String serveArea;
-
-    @Enumerated(value = EnumType.STRING)
-    @Column(name = "gender")
-    private GenderEnum gender;
-
-    @Column(name = "phone_number")
-    private String phoneNumber;
-
-    @Column(name = "company_address")
-    private String companyAddress;
-
-    @Column(name = "seniority_year")
-    private Long seniorityYear;
-
-    @Column(name = "seniority_month")
-    private Long seniorityMonth;
-
-    @Column(name = "concept")
-    private String concept;
-
-    @Column(name = "experience")
-    private String experience;
-
-    @Column(name = "award")
-    private String award;
-
-    @Column(name = "recommend")
-    private Boolean recommend;
-
-    @Column(name = "communication_style")
-    private String communicationStyle;
-
-    @Column(name = "email")
-    private String email;
-
-    @Enumerated(value = EnumType.STRING)
-    @Column(name = "status")
-    private ConsultantStatusEnum status;
-
-    @Column(name = "latest_login_time")
-    private Instant latestLoginTime;
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getAgentNo() {
-        return agentNo;
-    }
-
-    public void setAgentNo(String agentNo) {
-        this.agentNo = agentNo;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getPhotoPath() {
-        return photoPath;
-    }
-
-    public void setPhotoPath(String photoPath) {
-        this.photoPath = photoPath;
-    }
-
-    public String getExpertise() {
-        return expertise;
-    }
-
-    public void setExpertise(String expertise) {
-        this.expertise = expertise;
-    }
-
-    public Float getAvgScore() {
-        return avgScore;
-    }
-
-    public void setAvgScore(Float avgScore) {
-        this.avgScore = avgScore;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    public String getRole() {
-        return role;
-    }
-
-    public void setRole(String role) {
-        this.role = role;
-    }
-
-    public String getServeArea() {
-        return serveArea;
-    }
-
-    public void setServeArea(String serveArea) {
-        this.serveArea = serveArea;
-    }
-
-    public GenderEnum getGender() {
-        return gender;
-    }
-
-    public void setGender(GenderEnum gender) {
-        this.gender = gender;
-    }
-
-    public String getPhoneNumber() {
-        return phoneNumber;
-    }
-
-    public void setPhoneNumber(String phoneNumber) {
-        this.phoneNumber = phoneNumber;
-    }
-
-    public String getCompanyAddress() {
-        return companyAddress;
-    }
-
-    public void setCompanyAddress(String companyAddress) {
-        this.companyAddress = companyAddress;
-    }
-
-    public Long getSeniorityYear() {
-        return seniorityYear;
-    }
-
-    public void setSeniorityYear(Long seniorityYear) {
-        this.seniorityYear = seniorityYear;
-    }
-
-    public Long getSeniorityMonth() {
-        return seniorityMonth;
-    }
-
-    public void setSeniorityMonth(Long seniorityMonth) {
-        this.seniorityMonth = seniorityMonth;
-    }
-
-    public String getSeniorityDTOString() {
-        final String seniorityYearString = this.seniorityYear != 0 ? this.seniorityYear + " 撟� " : "";
-        final String seniorityMonthString = this.seniorityMonth != 0 ? this.seniorityMonth + " ���" : "";
-
-        return seniorityYearString + seniorityMonthString;
-    }
-
-    public String getConcept() {
-        return concept;
-    }
-
-    public void setConcept(String concept) {
-        this.concept = concept;
-    }
-
-    public String getExperience() {
-        return experience;
-    }
-
-    public void setExperience(String experience) {
-        this.experience = experience;
-    }
-
-    public String getAward() {
-        return award;
-    }
-
-    public void setAward(String award) {
-        this.award = award;
-    }
-
-    public Boolean getRecommend() {
-        return recommend;
-    }
-
-    public void setRecommend(Boolean recommend) {
-        this.recommend = recommend;
-    }
-
-    public String getCommunicationStyle() {
-        return communicationStyle;
-    }
-
-    public void setCommunicationStyle(String communicationStyle) {
-        this.communicationStyle = communicationStyle;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public ConsultantStatusEnum getStatus() {
-        return status;
-    }
-
-    public void setStatus(ConsultantStatusEnum status) {
-        this.status = status;
-    }
-
-    public Instant getLatestLoginTime() {
-        return latestLoginTime;
-    }
-
-    public void setLatestLoginTime(Instant latestLoginTime) {
-        this.latestLoginTime = latestLoginTime;
-    }
-
-    @Override
-    public String toString() {
-        return "Consultant{" +
-            "id=" + id +
-            ", agentNo='" + agentNo + '\'' +
-            ", name='" + name + '\'' +
-            ", photoPath='" + photoPath + '\'' +
-            ", expertise='" + expertise + '\'' +
-            ", avgScore=" + avgScore +
-            ", title='" + title + '\'' +
-            ", role='" + role + '\'' +
-            ", serveArea='" + serveArea + '\'' +
-            ", gender=" + gender +
-            ", phoneNumber='" + phoneNumber + '\'' +
-            ", companyAddress='" + companyAddress + '\'' +
-            ", seniorityYear=" + seniorityYear +
-            ", seniorityMonth=" + seniorityMonth +
-            ", concept='" + concept + '\'' +
-            ", experience='" + experience + '\'' +
-            ", award='" + award + '\'' +
-            ", recommend=" + recommend +
-            ", communicationStyle='" + communicationStyle + '\'' +
-            ", email='" + email + '\'' +
-            '}';
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/Customer.java b/pamapi/src/main/java/com/pollex/pam/domain/Customer.java
deleted file mode 100644
index c3055cc..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/Customer.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package com.pollex.pam.domain;
-
-import java.io.Serializable;
-import java.time.Instant;
-import java.util.Optional;
-
-import javax.persistence.*;
-
-import org.springframework.data.annotation.CreatedDate;
-import org.springframework.data.annotation.LastModifiedDate;
-import org.springframework.data.jpa.domain.support.AuditingEntityListener;
-import org.springframework.util.StringUtils;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.pollex.pam.enums.OtpLoginTypeEnum;
-
-@EntityListeners(AuditingEntityListener.class)
-@Entity
-@Table(name = "customer")
-public class Customer implements Serializable {
-
-	/**
-	 *
-	 */
-	private static final long serialVersionUID = 1L;
-
-	@Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-	@Column(name = "name")
-    private String name;
-
-	@Column(name = "phone")
-    private String phone;
-
-	@Column(name = "email")
-    private String email;
-
-	@Enumerated(value = EnumType.STRING)
-	@Column(name = "contact_type")
-    private OtpLoginTypeEnum contactType;
-
-	@CreatedDate
-    @Column(name = "created_date", updatable = false)
-    @JsonIgnore
-    private Instant createdDate = Instant.now();
-
-    @LastModifiedDate
-    @Column(name = "last_modified_date")
-    @JsonIgnore
-    private Instant lastModifiedDate = Instant.now();
-
-    @CreatedDate
-    @Column(name = "agree_personal_information_time", updatable = false)
-    @JsonIgnore
-    private Instant agreePersonalInformationTime;
-
-	public Long getId() {
-		return id;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public String getName() {
-		return name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public String getPhone() {
-		return phone;
-	}
-
-	public void setPhone(String phone) {
-		this.phone = phone;
-	}
-
-	public String getEmail() {
-		return email;
-	}
-
-	public void setEmail(String email) {
-		this.email = email;
-	}
-
-	public Instant getCreatedDate() {
-		return createdDate;
-	}
-
-	public void setCreatedDate(Instant createdDate) {
-		this.createdDate = createdDate;
-	}
-
-	public Instant getLastModifiedDate() {
-		return lastModifiedDate;
-	}
-
-	public void setLastModifiedDate(Instant lastModifiedDate) {
-		this.lastModifiedDate = lastModifiedDate;
-	}
-
-	public OtpLoginTypeEnum getContactType() {
-		return contactType;
-	}
-
-	public void setContactType(OtpLoginTypeEnum contactType) {
-		this.contactType = contactType;
-	}
-
-    public Instant getAgreePersonalInformationTime() {
-        return agreePersonalInformationTime;
-    }
-
-    public void setAgreePersonalInformationTime(Instant agreePersonalInformationTime) {
-        this.agreePersonalInformationTime = agreePersonalInformationTime;
-    }
-
-    public String toAccountString() {
-    	return Optional.ofNullable(getPhone())
-				.filter(StringUtils::hasText)
-				.orElseGet(this::getEmail);
-    }
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/CustomerFavoriteConsultant.java b/pamapi/src/main/java/com/pollex/pam/domain/CustomerFavoriteConsultant.java
deleted file mode 100644
index a25ab35..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/CustomerFavoriteConsultant.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package com.pollex.pam.domain;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import org.springframework.data.annotation.CreatedBy;
-import org.springframework.data.annotation.CreatedDate;
-import org.springframework.data.annotation.LastModifiedBy;
-import org.springframework.data.annotation.LastModifiedDate;
-import org.springframework.data.jpa.domain.support.AuditingEntityListener;
-
-import javax.persistence.*;
-import java.io.Serializable;
-import java.time.Instant;
-
-@EntityListeners(AuditingEntityListener.class)
-@Entity
-@Table(name = "customer_favorite_consultant")
-public class CustomerFavoriteConsultant implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
-    @SequenceGenerator(name = "sequenceGenerator")
-    private Long id;
-
-    @ManyToOne
-    @JoinColumn(name = "consultant_id")
-    private Consultant consultant;
-
-    @Column(name = "customer_id")
-    private Long customerId;
-
-    @CreatedBy
-    @Column(name = "created_by", updatable = false)
-    @JsonIgnore
-    private String createdBy;
-
-    @Column(name = "created_date")
-    @JsonIgnore
-    private Instant createdDate;
-
-    @LastModifiedBy
-    @Column(name = "last_modified_by")
-    @JsonIgnore
-    private String lastModifiedBy;
-
-    @Column(name = "last_modified_date")
-    @JsonIgnore
-    private Instant lastModifiedDate = Instant.now();
-
-    @Column(name = "view_time")
-    private Instant viewTime;
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Consultant getConsultant() {
-        return consultant;
-    }
-
-    public void setConsultant(Consultant consultant) {
-        this.consultant = consultant;
-    }
-
-    public Long getCustomerId() {
-        return customerId;
-    }
-
-    public void setCustomerId(Long customId) {
-        this.customerId = customId;
-    }
-
-    public Instant getViewTime() {
-        return viewTime;
-    }
-
-    public void setViewTime(Instant viewTime) {
-        this.viewTime = viewTime;
-    }
-
-    public String getCreatedBy() {
-        return createdBy;
-    }
-
-    public void setCreatedBy(String createdBy) {
-        this.createdBy = createdBy;
-    }
-
-    public Instant getCreatedDate() {
-        return createdDate;
-    }
-
-    public void setCreatedDate(Instant createdDate) {
-        this.createdDate = createdDate;
-    }
-
-    public String getLastModifiedBy() {
-        return lastModifiedBy;
-    }
-
-    public void setLastModifiedBy(String lastModifiedBy) {
-        this.lastModifiedBy = lastModifiedBy;
-    }
-
-    public Instant getLastModifiedDate() {
-        return lastModifiedDate;
-    }
-
-    public void setLastModifiedDate(Instant lastModifiedDate) {
-        this.lastModifiedDate = lastModifiedDate;
-    }
-
-    @Override
-    public String toString() {
-        return "CustomerFavoriteConsultant{" +
-            "id=" + id +
-            ", consultant=" + consultant +
-            ", customerId=" + customerId +
-            ", createdBy='" + createdBy + '\'' +
-            ", createdDate=" + createdDate +
-            ", lastModifiedBy='" + lastModifiedBy + '\'' +
-            ", lastModifiedDate=" + lastModifiedDate +
-            ", viewTime=" + viewTime +
-            '}';
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/InterviewRecord.java b/pamapi/src/main/java/com/pollex/pam/domain/InterviewRecord.java
deleted file mode 100644
index c7f02d1..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/InterviewRecord.java
+++ /dev/null
@@ -1,87 +0,0 @@
-package com.pollex.pam.domain;
-
-import java.io.Serializable;
-import java.util.Date;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import com.pollex.pam.enums.InterviewRecordStatusEnum;
-
-@Entity
-@Table(name = "interview_record")
-public class InterviewRecord extends AbstractAuditingEntity implements Serializable {
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	
-	@Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-	
-	@Column(name = "content")
-    private String content;
-	
-	@Column(name = "interview_date")
-    private Date interviewDate;
-	
-	@Column(name = "appointment_id")
-	private Long appointmentId;
-	
-	@Enumerated(EnumType.STRING)
-	@Column(name = "status")
-    private InterviewRecordStatusEnum status;
-	
-	
-
-	public Long getId() {
-		return id;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public String getContent() {
-		return content;
-	}
-
-	public void setContent(String content) {
-		this.content = content;
-	}
-
-	public Date getInterviewDate() {
-		return interviewDate;
-	}
-
-	public void setInterviewDate(Date interviewDate) {
-		this.interviewDate = interviewDate;
-	}
-
-	public Long getAppointmentId() {
-		return appointmentId;
-	}
-
-	public void setAppointmentId(Long appointmentId) {
-		this.appointmentId = appointmentId;
-	}
-
-	public InterviewRecordStatusEnum getStatus() {
-		return status;
-	}
-
-	public void setStatus(InterviewRecordStatusEnum status) {
-		this.status = status;
-	}
-	
-	
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/OtpTmp.java b/pamapi/src/main/java/com/pollex/pam/domain/OtpTmp.java
deleted file mode 100644
index 4007d37..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/OtpTmp.java
+++ /dev/null
@@ -1,92 +0,0 @@
-package com.pollex.pam.domain;
-
-import java.io.Serializable;
-import java.time.Instant;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import org.springframework.data.annotation.CreatedDate;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.pollex.pam.enums.OtpLoginTypeEnum;
-import com.pollex.pam.enums.OtpTmpStatusEnum;
-
-@Entity
-@Table(name = "otp_tmp")
-public class OtpTmp implements Serializable{
-	
-	
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-	@Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-	
-	@Column(name = "account")
-    private String account;
-	
-	@Column(name = "index_key")
-    private String indexKey;
-	
-	@Enumerated(value = EnumType.STRING)
-	@Column(name = "status")
-    private OtpTmpStatusEnum status;
-	
-	@CreatedDate
-    @Column(name = "created_date", updatable = false)
-    @JsonIgnore
-    private Instant createdDate = Instant.now();
-
-	public Long getId() {
-		return id;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public String getIndexKey() {
-		return indexKey;
-	}
-
-	public void setIndexKey(String indexKey) {
-		this.indexKey = indexKey;
-	}
-
-	public OtpTmpStatusEnum getStatus() {
-		return status;
-	}
-
-	public void setStatus(OtpTmpStatusEnum status) {
-		this.status = status;
-	}
-
-	public Instant getCreatedDate() {
-		return createdDate;
-	}
-
-	public void setCreatedDate(Instant createdDate) {
-		this.createdDate = createdDate;
-	}
-
-	public String getAccount() {
-		return account;
-	}
-
-	public void setAccount(String account) {
-		this.account = account;
-	}
-	
-	
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/PersonalNotification.java b/pamapi/src/main/java/com/pollex/pam/domain/PersonalNotification.java
deleted file mode 100644
index 922994b..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/PersonalNotification.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package com.pollex.pam.domain;
-
-import java.io.Serializable;
-import java.time.Instant;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import org.springframework.data.annotation.CreatedDate;
-
-import com.pollex.pam.enums.NotificationTypeEnum;
-import com.pollex.pam.enums.PersonalNotificationRoleEnum;
-
-@Entity
-@Table(name = "personal_notification")
-public class PersonalNotification implements Serializable {
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	
-	@Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-	
-	@Column(name = "title")
-    private String title;
-	
-	@Column(name = "content")
-    private String content;
-	
-	@Enumerated(EnumType.STRING)
-	@Column(name = "notification_type")
-    private NotificationTypeEnum notificationType;
-	
-	@Enumerated(EnumType.STRING)
-	@Column(name = "owner_role")
-    private PersonalNotificationRoleEnum ownerRole;
-	
-	@Column(name = "owner_id")
-    private Long ownerId;
-	
-	@CreatedDate
-	@Column(name = "created_date", updatable = false)
-    private Instant createdDate = Instant.now();
-	
-	@Column(name = "read_date")
-    private Instant readDate;
-
-	public Long getId() {
-		return id;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public String getTitle() {
-		return title;
-	}
-
-	public void setTitle(String title) {
-		this.title = title;
-	}
-
-	public String getContent() {
-		return content;
-	}
-
-	public void setContent(String content) {
-		this.content = content;
-	}
-
-	public NotificationTypeEnum getNotificationType() {
-		return notificationType;
-	}
-
-	public void setNotificationType(NotificationTypeEnum notificationType) {
-		this.notificationType = notificationType;
-	}
-
-	public PersonalNotificationRoleEnum getOwnerRole() {
-		return ownerRole;
-	}
-
-	public void setOwnerRole(PersonalNotificationRoleEnum ownerRole) {
-		this.ownerRole = ownerRole;
-	}
-
-	public Long getOwnerId() {
-		return ownerId;
-	}
-
-	public void setOwnerId(Long ownerId) {
-		this.ownerId = ownerId;
-	}
-
-	public Instant getCreatedDate() {
-		return createdDate;
-	}
-
-	public void setCreatedDate(Instant createdDate) {
-		this.createdDate = createdDate;
-	}
-
-	public Instant getReadDate() {
-		return readDate;
-	}
-
-	public void setReadDate(Instant readDate) {
-		this.readDate = readDate;
-	}
-	
-	
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/Satisfaction.java b/pamapi/src/main/java/com/pollex/pam/domain/Satisfaction.java
deleted file mode 100644
index 530bc06..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/Satisfaction.java
+++ /dev/null
@@ -1,137 +0,0 @@
-package com.pollex.pam.domain;
-
-import java.io.Serializable;
-import java.time.Instant;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.Table;
-
-import com.pollex.pam.enums.PersonalNotificationRoleEnum;
-import com.pollex.pam.enums.SatisfactionTypeEnum;
-import org.springframework.data.annotation.CreatedDate;
-import org.springframework.data.annotation.LastModifiedDate;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.pollex.pam.enums.SatisfactionStatusEnum;
-
-@Entity
-@Table(name = "satisfaction")
-public class Satisfaction implements Serializable {
-
-	/**
-	 *
-	 */
-	private static final long serialVersionUID = 1L;
-
-	@Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    private Long id;
-
-	@CreatedDate
-    @Column(name = "created_date", updatable = false)
-    @JsonIgnore
-    private Instant createdDate = Instant.now();
-
-    @LastModifiedDate
-    @Column(name = "last_modified_date")
-    @JsonIgnore
-    private Instant lastModifiedDate = Instant.now();
-
-    @Column(name = "customer_id")
-    private Long customerId;
-
-    @Column(name = "agent_no")
-    private String agentNo;
-
-    @Enumerated(EnumType.STRING)
-    @Column(name = "status")
-    private SatisfactionStatusEnum status;
-
-    @Column(name = "score")
-    private Float score;
-
-    @Column(name = "appointment_id")
-    private Long appointmentId;
-
-    @Enumerated(EnumType.STRING)
-    @Column(name = "type")
-    private SatisfactionTypeEnum type;
-
-	public Long getId() {
-		return id;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public Instant getCreatedDate() {
-		return createdDate;
-	}
-
-	public void setCreatedDate(Instant createdDate) {
-		this.createdDate = createdDate;
-	}
-
-	public Instant getLastModifiedDate() {
-		return lastModifiedDate;
-	}
-
-	public void setLastModifiedDate(Instant lastModifiedDate) {
-		this.lastModifiedDate = lastModifiedDate;
-	}
-
-	public Long getCustomerId() {
-		return customerId;
-	}
-
-	public void setCustomerId(Long customerId) {
-		this.customerId = customerId;
-	}
-
-	public String getAgentNo() {
-		return agentNo;
-	}
-
-	public void setAgentNo(String agentNo) {
-		this.agentNo = agentNo;
-	}
-
-	public SatisfactionStatusEnum getStatus() {
-		return status;
-	}
-
-	public void setStatus(SatisfactionStatusEnum status) {
-		this.status = status;
-	}
-
-	public Float getScore() {
-		return score;
-	}
-
-	public void setScore(Float score) {
-		this.score = score;
-	}
-
-    public Long getAppointmentId() {
-        return appointmentId;
-    }
-
-    public void setAppointmentId(Long appointmentId) {
-        this.appointmentId = appointmentId;
-    }
-
-    public SatisfactionTypeEnum getType() {
-        return type;
-    }
-
-    public void setType(SatisfactionTypeEnum type) {
-        this.type = type;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/User.java b/pamapi/src/main/java/com/pollex/pam/domain/User.java
deleted file mode 100644
index 3be5c1d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/User.java
+++ /dev/null
@@ -1,232 +0,0 @@
-package com.pollex.pam.domain;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.pollex.pam.config.Constants;
-import java.io.Serializable;
-import java.time.Instant;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Set;
-import javax.persistence.*;
-import javax.validation.constraints.Email;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
-import org.apache.commons.lang3.StringUtils;
-import org.hibernate.annotations.BatchSize;
-import org.hibernate.annotations.Cache;
-import org.hibernate.annotations.CacheConcurrencyStrategy;
-
-/**
- * A user.
- */
-@Entity
-@Table(name = "jhi_user")
-@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
-public class User extends AbstractAuditingEntity implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
-    @SequenceGenerator(name = "sequenceGenerator")
-    private Long id;
-
-    @NotNull
-    @Pattern(regexp = Constants.LOGIN_REGEX)
-    @Size(min = 1, max = 50)
-    @Column(length = 50, unique = true, nullable = false)
-    private String login;
-
-    @JsonIgnore
-    @NotNull
-    @Size(min = 60, max = 60)
-    @Column(name = "password_hash", length = 60, nullable = false)
-    private String password;
-
-    @Size(max = 50)
-    @Column(name = "first_name", length = 50)
-    private String firstName;
-
-    @Size(max = 50)
-    @Column(name = "last_name", length = 50)
-    private String lastName;
-
-    @Email
-    @Size(min = 5, max = 254)
-    @Column(length = 254, unique = true)
-    private String email;
-
-    @NotNull
-    @Column(nullable = false)
-    private boolean activated = false;
-
-    @Size(min = 2, max = 10)
-    @Column(name = "lang_key", length = 10)
-    private String langKey;
-
-    @Size(max = 256)
-    @Column(name = "image_url", length = 256)
-    private String imageUrl;
-
-    @Size(max = 20)
-    @Column(name = "activation_key", length = 20)
-    @JsonIgnore
-    private String activationKey;
-
-    @Size(max = 20)
-    @Column(name = "reset_key", length = 20)
-    @JsonIgnore
-    private String resetKey;
-
-    @Column(name = "reset_date")
-    private Instant resetDate = null;
-
-    @JsonIgnore
-    @ManyToMany
-    @JoinTable(
-        name = "jhi_user_authority",
-        joinColumns = { @JoinColumn(name = "user_id", referencedColumnName = "id") },
-        inverseJoinColumns = { @JoinColumn(name = "authority_name", referencedColumnName = "name") }
-    )
-    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
-    @BatchSize(size = 20)
-    private Set<Authority> authorities = new HashSet<>();
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getLogin() {
-        return login;
-    }
-
-    // Lowercase the login before saving it in database
-    public void setLogin(String login) {
-        this.login = StringUtils.lowerCase(login, Locale.ENGLISH);
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public String getFirstName() {
-        return firstName;
-    }
-
-    public void setFirstName(String firstName) {
-        this.firstName = firstName;
-    }
-
-    public String getLastName() {
-        return lastName;
-    }
-
-    public void setLastName(String lastName) {
-        this.lastName = lastName;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public String getImageUrl() {
-        return imageUrl;
-    }
-
-    public void setImageUrl(String imageUrl) {
-        this.imageUrl = imageUrl;
-    }
-
-    public boolean isActivated() {
-        return activated;
-    }
-
-    public void setActivated(boolean activated) {
-        this.activated = activated;
-    }
-
-    public String getActivationKey() {
-        return activationKey;
-    }
-
-    public void setActivationKey(String activationKey) {
-        this.activationKey = activationKey;
-    }
-
-    public String getResetKey() {
-        return resetKey;
-    }
-
-    public void setResetKey(String resetKey) {
-        this.resetKey = resetKey;
-    }
-
-    public Instant getResetDate() {
-        return resetDate;
-    }
-
-    public void setResetDate(Instant resetDate) {
-        this.resetDate = resetDate;
-    }
-
-    public String getLangKey() {
-        return langKey;
-    }
-
-    public void setLangKey(String langKey) {
-        this.langKey = langKey;
-    }
-
-    public Set<Authority> getAuthorities() {
-        return authorities;
-    }
-
-    public void setAuthorities(Set<Authority> authorities) {
-        this.authorities = authorities;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (!(o instanceof User)) {
-            return false;
-        }
-        return id != null && id.equals(((User) o).id);
-    }
-
-    @Override
-    public int hashCode() {
-        // see https://vladmihalcea.com/how-to-implement-equals-and-hashcode-using-the-jpa-entity-identifier/
-        return getClass().hashCode();
-    }
-
-    // prettier-ignore
-    @Override
-    public String toString() {
-        return "User{" +
-            "login='" + login + '\'' +
-            ", firstName='" + firstName + '\'' +
-            ", lastName='" + lastName + '\'' +
-            ", email='" + email + '\'' +
-            ", imageUrl='" + imageUrl + '\'' +
-            ", activated='" + activated + '\'' +
-            ", langKey='" + langKey + '\'' +
-            ", activationKey='" + activationKey + '\'' +
-            "}";
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/domain/package-info.java b/pamapi/src/main/java/com/pollex/pam/domain/package-info.java
deleted file mode 100644
index bcfa3f9..0000000
--- a/pamapi/src/main/java/com/pollex/pam/domain/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * JPA domain objects.
- */
-package com.pollex.pam.domain;
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/AppointmentStatusEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/AppointmentStatusEnum.java
deleted file mode 100644
index 55d674c..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/AppointmentStatusEnum.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum AppointmentStatusEnum {
-    AVAILABLE,
-    DELETED
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/ConsultantDetailEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/ConsultantDetailEnum.java
deleted file mode 100644
index 331dd27..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/ConsultantDetailEnum.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum ConsultantDetailEnum {
-    ID("ConsultantId"),
-    NAME("ConsultantName"),
-    AGENT_NO("ConsultantAgentNo");
-
-    private final String value;
-
-    ConsultantDetailEnum(String value) {
-        this.value = value;
-    }
-
-    public String getValue() {
-        return value;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/ConsultantStatusEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/ConsultantStatusEnum.java
deleted file mode 100644
index c10f9fe..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/ConsultantStatusEnum.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum ConsultantStatusEnum {
-    AVAILABLE,
-    DISABLE
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/ContactStatusEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/ContactStatusEnum.java
deleted file mode 100644
index 934a167..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/ContactStatusEnum.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.pollex.pam.enums;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public enum ContactStatusEnum {
-    @JsonProperty("picked")
-    PICKED,
-
-    @JsonProperty("reserved")
-    RESERVED,
-
-    @JsonProperty("contacted")
-    CONTACTED,
-    
-    @JsonProperty("done")
-    DONE,
-    
-    @JsonProperty("closed")
-    CLOSED,
-    
-    @JsonProperty("cancel")
-    CANCEL
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/CustomerDetailEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/CustomerDetailEnum.java
deleted file mode 100644
index aa56703..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/CustomerDetailEnum.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum CustomerDetailEnum {
-    DB_ID("CustomerDBId");
-
-    private final String value;
-
-    CustomerDetailEnum(String value) {
-        this.value = value;
-    }
-
-    public String getValue() {
-        return value;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/GenderEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/GenderEnum.java
deleted file mode 100644
index 0bcc63f..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/GenderEnum.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.pollex.pam.enums;
-
-import com.fasterxml.jackson.annotation.JsonCreator;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public enum GenderEnum {
-
-    @JsonProperty("male")
-    MALE,
-
-    @JsonProperty("female")
-    FEMALE;
-
-    @JsonCreator
-    public static GenderEnum forName(String name) {
-        for(GenderEnum c: values()) {
-            if(c.name().equals(name.toUpperCase())) {
-                return c;
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/InterviewRecordStatusEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/InterviewRecordStatusEnum.java
deleted file mode 100644
index 9bc0ee8..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/InterviewRecordStatusEnum.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum InterviewRecordStatusEnum {
-	AVAILABLE,
-	DELETED
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/LoginMethod.java b/pamapi/src/main/java/com/pollex/pam/enums/LoginMethod.java
deleted file mode 100644
index 836e852..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/LoginMethod.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum LoginMethod {
-    OTP,
-    E_SERVICE
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/LoginResult.java b/pamapi/src/main/java/com/pollex/pam/enums/LoginResult.java
deleted file mode 100644
index 562700d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/LoginResult.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum LoginResult {
-    SUCCESS,
-    FAIL
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/NotificationTypeEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/NotificationTypeEnum.java
deleted file mode 100644
index a14a84d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/NotificationTypeEnum.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum NotificationTypeEnum {
-	SYSTEM,
-	ACTIVITY
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/OtpLoginTypeEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/OtpLoginTypeEnum.java
deleted file mode 100644
index 43635cd..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/OtpLoginTypeEnum.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum OtpLoginTypeEnum {
-    SMS,
-    EMAIL
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/OtpTmpStatusEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/OtpTmpStatusEnum.java
deleted file mode 100644
index b48d88e..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/OtpTmpStatusEnum.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum OtpTmpStatusEnum {
-	UNVERIFIED,
-    VERRIFIED
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/PersonalNotificationRoleEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/PersonalNotificationRoleEnum.java
deleted file mode 100644
index 0f063c2..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/PersonalNotificationRoleEnum.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum PersonalNotificationRoleEnum {
-	CUSTOMER,
-	CONSULTANT
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/SatisfactionStatusEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/SatisfactionStatusEnum.java
deleted file mode 100644
index 0b708e6..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/SatisfactionStatusEnum.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum SatisfactionStatusEnum {
-	UNFILLED,
-	FILLED
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/SatisfactionTypeEnum.java b/pamapi/src/main/java/com/pollex/pam/enums/SatisfactionTypeEnum.java
deleted file mode 100644
index a15dfc0..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/SatisfactionTypeEnum.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum SatisfactionTypeEnum {
-    APPOINTMENT,        // 撠“�����遛��漲
-    SYSTEM              // 撠像���遛��漲
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/enums/SendEmailMsgMethod.java b/pamapi/src/main/java/com/pollex/pam/enums/SendEmailMsgMethod.java
deleted file mode 100644
index 42a10ce..0000000
--- a/pamapi/src/main/java/com/pollex/pam/enums/SendEmailMsgMethod.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package com.pollex.pam.enums;
-
-public enum SendEmailMsgMethod {
-    PAM_EMAIL_SERVICE,
-    POLLEX_GMAIL
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentClosedInfoRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/AppointmentClosedInfoRepository.java
deleted file mode 100644
index b5d23ad..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentClosedInfoRepository.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.pollex.pam.repository;
-
-import java.util.Optional;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import com.pollex.pam.domain.AppointmentClosedInfo;
-
-@Repository
-public interface AppointmentClosedInfoRepository extends JpaRepository<AppointmentClosedInfo, Long>{
-
-	Optional<AppointmentClosedInfo> findByAppointmentId(Long apId);
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentCustomerViewRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/AppointmentCustomerViewRepository.java
deleted file mode 100644
index 61b5a04..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentCustomerViewRepository.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.pollex.pam.repository;
-
-import java.util.List;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.enums.AppointmentStatusEnum;
-import com.pollex.pam.enums.ContactStatusEnum;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import com.pollex.pam.domain.AppointmentCustomerView;
-
-@Repository
-public interface AppointmentCustomerViewRepository extends JpaRepository<AppointmentCustomerView, Long>{
-	List<AppointmentCustomerView> findByAgentNo(String agentNo);
-    List<AppointmentCustomerView> findByAgentNoAndCustomerId(String agentNo, Long customerId);
-    List<AppointmentCustomerView> findAllByCommunicateStatusAndStatus(ContactStatusEnum contactStatus, AppointmentStatusEnum status);
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentExpiringNotifyRecordRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/AppointmentExpiringNotifyRecordRepository.java
deleted file mode 100644
index 61a559a..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentExpiringNotifyRecordRepository.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.pollex.pam.repository;
-
-import com.pollex.pam.domain.AppointmentExpiringNotifyRecord;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-@Repository
-public interface AppointmentExpiringNotifyRecordRepository extends JpaRepository<AppointmentExpiringNotifyRecord, Long> {
-    List<AppointmentExpiringNotifyRecord> findAllByAppointmentId(Long appointmentId);
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentMemoRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/AppointmentMemoRepository.java
deleted file mode 100644
index 1b14cc7..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentMemoRepository.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.pollex.pam.repository;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import com.pollex.pam.domain.AppointmentMemo;
-
-@Repository
-public interface AppointmentMemoRepository extends JpaRepository<AppointmentMemo, Long>{
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentNoticeLogRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/AppointmentNoticeLogRepository.java
deleted file mode 100644
index e939258..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentNoticeLogRepository.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.pollex.pam.repository;
-
-import java.util.List;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import com.pollex.pam.domain.AppointmentNoticeLog;
-
-@Repository
-public interface AppointmentNoticeLogRepository extends JpaRepository<AppointmentNoticeLog, Long>{
-
-	List<AppointmentNoticeLog> findByAppointmentId(Long appointmentId);
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/AppointmentRepository.java
deleted file mode 100644
index fe01955..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/AppointmentRepository.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.pollex.pam.repository;
-
-import java.util.List;
-import java.util.Optional;
-
-import com.pollex.pam.enums.AppointmentStatusEnum;
-import com.pollex.pam.enums.ContactStatusEnum;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import com.pollex.pam.domain.Appointment;
-
-@Repository
-public interface AppointmentRepository extends JpaRepository<Appointment, Long>{
-
-	List<Appointment> findByAgentNo(String agentNo);
-
-    List<Appointment> findByAgentNoAndCustomerId(String agentNo, Long customerId);
-
-    Optional<Appointment> findTopByAgentNoAndCustomerIdOrderByAppointmentDateDesc(String agentNo, Long customerId);
-
-    List<Appointment> findAllByCommunicateStatusAndStatus(ContactStatusEnum contactStatus, AppointmentStatusEnum status);
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/AuditLoggingRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/AuditLoggingRepository.java
deleted file mode 100644
index df66794..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/AuditLoggingRepository.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.pollex.pam.repository;
-
-import com.pollex.pam.domain.AuditLogging;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface AuditLoggingRepository extends JpaRepository<AuditLogging, Long> {
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/AuthorityRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/AuthorityRepository.java
deleted file mode 100644
index 111c063..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/AuthorityRepository.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.pollex.pam.repository;
-
-import com.pollex.pam.domain.Authority;
-import org.springframework.data.jpa.repository.JpaRepository;
-
-/**
- * Spring Data JPA repository for the {@link Authority} entity.
- */
-public interface AuthorityRepository extends JpaRepository<Authority, String> {}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/ConsultantRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/ConsultantRepository.java
deleted file mode 100644
index af244ab..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/ConsultantRepository.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.pollex.pam.repository;
-
-import com.pollex.pam.domain.Consultant;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-import java.util.Optional;
-
-@Repository
-public interface ConsultantRepository extends JpaRepository<Consultant, Long>, JpaSpecificationExecutor<Consultant> {
-    Optional<Consultant> findOneByAgentNo(String agentNo);
-    List<Consultant> findAllByRecommendIsTrue();
-    List<Consultant> findAllByAgentNoIn(List<String> agentNoList);
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/CustomerFavoriteConsultantRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/CustomerFavoriteConsultantRepository.java
deleted file mode 100644
index e61c4df..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/CustomerFavoriteConsultantRepository.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.pollex.pam.repository;
-
-import com.pollex.pam.domain.Consultant;
-import com.pollex.pam.domain.CustomerFavoriteConsultant;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-import java.util.Optional;
-
-@Repository
-public interface CustomerFavoriteConsultantRepository extends JpaRepository<CustomerFavoriteConsultant, Long> {
-    List<CustomerFavoriteConsultant> findAllByCustomerId(Long id);
-    Optional<CustomerFavoriteConsultant> findOneByCustomerIdAndConsultant(Long customerId, Consultant consultant);
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/CustomerRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/CustomerRepository.java
deleted file mode 100644
index e4ff8ee..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/CustomerRepository.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.pollex.pam.repository;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import com.pollex.pam.domain.Customer;
-
-import java.util.List;
-import java.util.Optional;
-
-@Repository
-public interface CustomerRepository extends JpaRepository<Customer, Long>{
-	
-	default Optional<Customer> findOneByEmailEqualsOrPhoneEquals(String emailOrEmail) {
-		return this.findOneByEmailEqualsOrPhoneEquals(emailOrEmail, emailOrEmail);
-	}
-	
-    Optional<Customer> findOneByEmailEqualsOrPhoneEquals(String email, String phone);
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/InterviewRecordRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/InterviewRecordRepository.java
deleted file mode 100644
index 1b2f8d4..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/InterviewRecordRepository.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.pollex.pam.repository;
-
-import java.util.List;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import com.pollex.pam.domain.InterviewRecord;
-import com.pollex.pam.enums.InterviewRecordStatusEnum;
-
-@Repository
-public interface InterviewRecordRepository extends JpaRepository<InterviewRecord, Long>{
-
-	List<InterviewRecord> findByAppointmentId(Long appointmentId);
-
-	List<InterviewRecord> findByAppointmentIdAndStatus(Long appointmentId, InterviewRecordStatusEnum status);
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/OtpTmpRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/OtpTmpRepository.java
deleted file mode 100644
index 7b49c10..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/OtpTmpRepository.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.pollex.pam.repository;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import com.pollex.pam.domain.OtpTmp;
-
-@Repository
-public interface OtpTmpRepository extends JpaRepository<OtpTmp, Long>{
-
-	OtpTmp findByAccountAndIndexKey(String account, String indexKey);
-
-	OtpTmp findByAccount(String account);
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/PersonalNotificationRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/PersonalNotificationRepository.java
deleted file mode 100644
index e6e4027..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/PersonalNotificationRepository.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.pollex.pam.repository;
-
-import java.util.List;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import com.pollex.pam.domain.PersonalNotification;
-import com.pollex.pam.enums.PersonalNotificationRoleEnum;
-
-@Repository
-public interface PersonalNotificationRepository extends JpaRepository<PersonalNotification, Long>{
-
-	List<PersonalNotification> findAllByOwnerRoleAndOwnerId(PersonalNotificationRoleEnum role, Long ownerId);
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/SatisfactionRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/SatisfactionRepository.java
deleted file mode 100644
index fa37237..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/SatisfactionRepository.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.pollex.pam.repository;
-
-import java.util.List;
-import java.util.Optional;
-
-import com.pollex.pam.enums.SatisfactionStatusEnum;
-import com.pollex.pam.enums.SatisfactionTypeEnum;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.data.repository.query.Param;
-import org.springframework.stereotype.Repository;
-
-import com.pollex.pam.domain.Satisfaction;
-
-@Repository
-public interface SatisfactionRepository extends JpaRepository<Satisfaction, Long>{
-
-	List<Satisfaction> findByAgentNoAndType(String agentNo, SatisfactionTypeEnum type);
-
-	List<Satisfaction> findByCustomerId(Long customerId);
-
-	Optional<Satisfaction> findOneByAppointmentIdAndType(Long appointmentId, SatisfactionTypeEnum type);
-
-    List<Satisfaction> findAllByStatusAndType(SatisfactionStatusEnum status, SatisfactionTypeEnum type);
-
-	@Query(value = "SELECT avg(score) FROM satisfaction where type='APPOINTMENT'"
-            + " and agent_no=:agent_no"
-			+ " and score is not null"
-			, nativeQuery = true)
-	Optional<Float> getAgentScoreAvg(@Param("agent_no") String agentNo);
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/UserRepository.java b/pamapi/src/main/java/com/pollex/pam/repository/UserRepository.java
deleted file mode 100644
index f4407cf..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/UserRepository.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.pollex.pam.repository;
-
-import com.pollex.pam.domain.User;
-import java.time.Instant;
-import java.util.List;
-import java.util.Optional;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.repository.EntityGraph;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-/**
- * Spring Data JPA repository for the {@link User} entity.
- */
-@Repository
-public interface UserRepository extends JpaRepository<User, Long> {
-    String USERS_BY_LOGIN_CACHE = "usersByLogin";
-
-    String USERS_BY_EMAIL_CACHE = "usersByEmail";
-
-    Optional<User> findOneByActivationKey(String activationKey);
-
-    List<User> findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(Instant dateTime);
-
-    Optional<User> findOneByResetKey(String resetKey);
-
-    Optional<User> findOneByEmailIgnoreCase(String email);
-
-    Optional<User> findOneByLogin(String login);
-
-    @EntityGraph(attributePaths = "authorities")
-    @Cacheable(cacheNames = USERS_BY_LOGIN_CACHE)
-    Optional<User> findOneWithAuthoritiesByLogin(String login);
-
-    @EntityGraph(attributePaths = "authorities")
-    @Cacheable(cacheNames = USERS_BY_EMAIL_CACHE)
-    Optional<User> findOneWithAuthoritiesByEmailIgnoreCase(String email);
-
-    Page<User> findAllByIdNotNullAndActivatedIsTrue(Pageable pageable);
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/repository/package-info.java b/pamapi/src/main/java/com/pollex/pam/repository/package-info.java
deleted file mode 100644
index 44ecf27..0000000
--- a/pamapi/src/main/java/com/pollex/pam/repository/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * Spring Data JPA repositories.
- */
-package com.pollex.pam.repository;
diff --git a/pamapi/src/main/java/com/pollex/pam/security/AuthoritiesConstants.java b/pamapi/src/main/java/com/pollex/pam/security/AuthoritiesConstants.java
deleted file mode 100644
index b67d92d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/security/AuthoritiesConstants.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.pollex.pam.security;
-
-/**
- * Constants for Spring Security authorities.
- */
-public final class AuthoritiesConstants {
-
-    public static final String ADMIN = "ROLE_ADMIN";
-
-    public static final String USER = "ROLE_USER";
-
-    public static final String ANONYMOUS = "ROLE_ANONYMOUS";
-
-    private AuthoritiesConstants() {}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/security/DomainUserDetailsService.java b/pamapi/src/main/java/com/pollex/pam/security/DomainUserDetailsService.java
index e8a35fa..91b4da8 100644
--- a/pamapi/src/main/java/com/pollex/pam/security/DomainUserDetailsService.java
+++ b/pamapi/src/main/java/com/pollex/pam/security/DomainUserDetailsService.java
@@ -1,7 +1,7 @@
 package com.pollex.pam.security;
 
-import com.pollex.pam.domain.User;
-import com.pollex.pam.repository.UserRepository;
+import com.pollex.pam.business.domain.User;
+import com.pollex.pam.business.repository.UserRepository;
 import java.util.*;
 import java.util.stream.Collectors;
 import org.hibernate.validator.internal.constraintvalidators.hv.EmailValidator;
diff --git a/pamapi/src/main/java/com/pollex/pam/security/SecurityUtils.java b/pamapi/src/main/java/com/pollex/pam/security/SecurityUtils.java
deleted file mode 100644
index 787c1f3..0000000
--- a/pamapi/src/main/java/com/pollex/pam/security/SecurityUtils.java
+++ /dev/null
@@ -1,123 +0,0 @@
-package com.pollex.pam.security;
-
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import com.pollex.pam.enums.ConsultantDetailEnum;
-import com.pollex.pam.enums.CustomerDetailEnum;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.userdetails.UserDetails;
-
-/**
- * Utility class for Spring Security.
- */
-public final class SecurityUtils {
-
-    private SecurityUtils() {}
-
-    /**
-     * Get the login of the current user.
-     *
-     * @return the login of the current user.
-     */
-    public static Optional<String> getCurrentUserLogin() {
-        SecurityContext securityContext = SecurityContextHolder.getContext();
-        return Optional.ofNullable(extractPrincipal(securityContext.getAuthentication()));
-    }
-
-    private static String extractPrincipal(Authentication authentication) {
-        if (authentication == null) {
-            return null;
-        } else if (authentication.getPrincipal() instanceof UserDetails) {
-            UserDetails springSecurityUser = (UserDetails) authentication.getPrincipal();
-            return springSecurityUser.getUsername();
-        } else if (authentication.getPrincipal() instanceof String) {
-            return (String) authentication.getPrincipal();
-        }
-        return null;
-    }
-
-    /**
-     * Get the JWT of the current user.
-     *
-     * @return the JWT of the current user.
-     */
-    public static Optional<String> getCurrentUserJWT() {
-        SecurityContext securityContext = SecurityContextHolder.getContext();
-        return Optional
-            .ofNullable(securityContext.getAuthentication())
-            .filter(authentication -> authentication.getCredentials() instanceof String)
-            .map(authentication -> (String) authentication.getCredentials());
-    }
-
-    /**
-     * Check if a user is authenticated.
-     *
-     * @return true if the user is authenticated, false otherwise.
-     */
-    public static boolean isAuthenticated() {
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-        return authentication != null && getAuthorities(authentication).noneMatch(AuthoritiesConstants.ANONYMOUS::equals);
-    }
-
-    /**
-     * Checks if the current user has any of the authorities.
-     *
-     * @param authorities the authorities to check.
-     * @return true if the current user has any of the authorities, false otherwise.
-     */
-    public static boolean hasCurrentUserAnyOfAuthorities(String... authorities) {
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-        return (
-            authentication != null && getAuthorities(authentication).anyMatch(authority -> Arrays.asList(authorities).contains(authority))
-        );
-    }
-
-    /**
-     * Checks if the current user has none of the authorities.
-     *
-     * @param authorities the authorities to check.
-     * @return true if the current user has none of the authorities, false otherwise.
-     */
-    public static boolean hasCurrentUserNoneOfAuthorities(String... authorities) {
-        return !hasCurrentUserAnyOfAuthorities(authorities);
-    }
-
-    /**
-     * Checks if the current user has a specific authority.
-     *
-     * @param authority the authority to check.
-     * @return true if the current user has the authority, false otherwise.
-     */
-    public static boolean hasCurrentUserThisAuthority(String authority) {
-        return hasCurrentUserAnyOfAuthorities(authority);
-    }
-
-    private static Stream<String> getAuthorities(Authentication authentication) {
-        return authentication.getAuthorities().stream().map(GrantedAuthority::getAuthority);
-    }
-
-    public static String getAgentNo() {
-        Map<String, String> userDetails = getCurrentUserDetails();
-        return userDetails.get(ConsultantDetailEnum.AGENT_NO.getValue());
-    }
-
-    public static Long getCustomerDBId() {
-    	Map<String, String> userDetails = getCurrentUserDetails();
-    	return Long.parseLong(userDetails.get(CustomerDetailEnum.DB_ID.getValue()));
-    }
-
-    public static Map<String, String> getCurrentUserDetails() {
-   	 SecurityContext securityContext = SecurityContextHolder.getContext();
-   	 if(securityContext.getAuthentication()==null ||
-   			 securityContext.getAuthentication().getDetails() ==null) {
-   		 return null;
-   	 }
-   	 return (Map<String, String>) securityContext.getAuthentication().getDetails();
-   }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/security/SpringSecurityAuditorAware.java b/pamapi/src/main/java/com/pollex/pam/security/SpringSecurityAuditorAware.java
index bd4efb7..66c8c8b 100644
--- a/pamapi/src/main/java/com/pollex/pam/security/SpringSecurityAuditorAware.java
+++ b/pamapi/src/main/java/com/pollex/pam/security/SpringSecurityAuditorAware.java
@@ -1,7 +1,9 @@
 package com.pollex.pam.security;
 
-import com.pollex.pam.config.Constants;
+import com.pollex.pam.business.config.Constants;
 import java.util.Optional;
+
+import com.pollex.pam.business.security.SecurityUtils;
 import org.springframework.data.domain.AuditorAware;
 import org.springframework.stereotype.Component;
 
diff --git a/pamapi/src/main/java/com/pollex/pam/security/provider/CustomAuthenticationProvider.java b/pamapi/src/main/java/com/pollex/pam/security/provider/CustomAuthenticationProvider.java
index 079a473..d4cea92 100644
--- a/pamapi/src/main/java/com/pollex/pam/security/provider/CustomAuthenticationProvider.java
+++ b/pamapi/src/main/java/com/pollex/pam/security/provider/CustomAuthenticationProvider.java
@@ -1,7 +1,8 @@
 package com.pollex.pam.security.provider;
 
+import com.pollex.pam.business.security.provider.EServiceAuthenticationProvider;
 import com.pollex.pam.config.ApplicationProperties;
-import com.pollex.pam.security.token.EServiceAuthenticationToken;
+import com.pollex.pam.business.security.token.EServiceAuthenticationToken;
 import com.pollex.pam.security.token.OtpAuthenticationToken;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.authentication.AbstractAuthenticationToken;
diff --git a/pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java b/pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java
deleted file mode 100644
index afef2d0..0000000
--- a/pamapi/src/main/java/com/pollex/pam/security/provider/EServiceAuthenticationProvider.java
+++ /dev/null
@@ -1,153 +0,0 @@
-package com.pollex.pam.security.provider;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.pollex.pam.config.ApplicationProperties;
-import com.pollex.pam.domain.Consultant;
-import com.pollex.pam.enums.ConsultantDetailEnum;
-import com.pollex.pam.repository.ConsultantRepository;
-import com.pollex.pam.security.token.EServiceAuthenticationToken;
-import com.pollex.pam.service.dto.EServiceResponse;
-import com.pollex.pam.web.rest.errors.ConsultantDisableException;
-import com.pollex.pam.web.rest.errors.EServiceErrorException;
-import org.apache.http.conn.ssl.NoopHostnameVerifier;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.ssl.SSLContexts;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.*;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.http.converter.HttpMessageConverter;
-import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.AuthenticationException;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Component;
-import org.springframework.web.client.RestTemplate;
-import org.springframework.web.util.UriComponentsBuilder;
-
-import javax.net.ssl.SSLContext;
-import java.security.GeneralSecurityException;
-import java.security.KeyManagementException;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.X509Certificate;
-import java.time.Instant;
-import java.util.*;
-
-import static com.pollex.pam.enums.ConsultantStatusEnum.DISABLE;
-
-@Component
-public class EServiceAuthenticationProvider {
-
-    private static final String E_SERVICE_LOGIN_SUCCESS_CODE = "true";
-    private static final Logger log = LoggerFactory.getLogger(EServiceAuthenticationProvider.class);
-
-    @Autowired
-    ApplicationProperties applicationProperty;
-
-    @Autowired
-    ConsultantRepository consultantRepository;
-
-    public Authentication authenticate(EServiceAuthenticationToken authenticationToken) throws AuthenticationException {
-        String account = authenticationToken.getPrincipal();
-        String credentials = authenticationToken.getCredentials();
-
-        if(applicationProperty.isMockLogin()){
-            return getConsultantTokenAndRecordLoginTime(account, credentials);
-        }
-
-        try {
-            ResponseEntity<EServiceResponse> responseEntity = loginByEService(account, credentials);
-            if(HttpStatus.OK.equals(responseEntity.getStatusCode())) {
-                EServiceResponse eServiceResponse = responseEntity.getBody();
-                log.debug("eService response = {}", eServiceResponse);
-
-                if(E_SERVICE_LOGIN_SUCCESS_CODE.equals(eServiceResponse.getIssuccess())){
-                    return getConsultantTokenAndRecordLoginTime(account, credentials);
-                }
-                else {
-                    throw new EServiceErrorException(eServiceResponse.getMsg());
-                }
-            }
-
-            throw new RuntimeException("eService http error!, response http status code = " + responseEntity.getStatusCode());
-        } catch (JsonProcessingException e) {
-            throw new RuntimeException("convert to json processing error!");
-        } catch (GeneralSecurityException e) {
-            throw new RuntimeException("General Security SSL error!");
-        }
-    }
-
-    private UsernamePasswordAuthenticationToken getConsultantTokenAndRecordLoginTime(String account, String credential) throws ConsultantDisableException {
-        Consultant consultant = consultantRepository.findOneByAgentNo(account).orElseThrow(() -> new UsernameNotFoundException("閰脤“����蒂銝��慦�像�蝟餌絞銝�"));
-
-        if(consultant.getStatus() == DISABLE) {
-            throw new ConsultantDisableException();
-        }
-
-        consultant.setLatestLoginTime(Instant.now());
-        consultantRepository.save(consultant);
-
-        List<GrantedAuthority> grantedAuths = Arrays.asList(new SimpleGrantedAuthority("ROLE_USER"));
-        UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(account, credential, grantedAuths);
-
-        Map<String, String> details = new HashMap<>();
-        details.put(ConsultantDetailEnum.ID.getValue(), consultant.getId().toString());
-        details.put(ConsultantDetailEnum.NAME.getValue(), consultant.getName());
-        details.put(ConsultantDetailEnum.AGENT_NO.getValue(), account);
-        authenticationToken.setDetails(details);
-
-        return authenticationToken;
-    }
-
-    private ResponseEntity<EServiceResponse> loginByEService(String account, String paxxword) throws JsonProcessingException, GeneralSecurityException {
-        RestTemplate restTemplate = getTrustAllRestTemplate();
-        settingMessageConvertersToSpecifyType(restTemplate, MediaType.ALL);
-
-        String urlTemplate = UriComponentsBuilder.fromHttpUrl(applicationProperty.geteServiceLoginUrl())
-            .queryParam("func", applicationProperty.geteServiceLoginFunc())
-            .queryParam("id", account)
-            .queryParam("pin", paxxword)
-            .queryParam("pwd", paxxword)
-            .queryParam("sys", applicationProperty.geteServiceLoginSys())
-            .queryParam("transactionId", UUID.randomUUID().toString())
-            .encode().toUriString();
-
-        log.debug("http get loginByEService, url = {}", urlTemplate);
-
-        HttpHeaders headers = new HttpHeaders();
-        headers.setContentType(MediaType.APPLICATION_JSON);
-
-        HttpEntity<String> entity = new HttpEntity<>(headers);
-        return restTemplate.exchange(urlTemplate, HttpMethod.GET, entity, EServiceResponse.class);
-    }
-
-    private RestTemplate getTrustAllRestTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
-        SSLContext sslContext = SSLContexts.custom()
-            .loadTrustMaterial(null, (X509Certificate[] x509Certs, String s) -> true)
-            .build();
-        SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier());
-        CloseableHttpClient httpClient = HttpClients.custom()
-            .setSSLSocketFactory(csf)
-            .build();
-        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
-        requestFactory.setHttpClient(httpClient);
-        requestFactory.setConnectTimeout(300000);
-        requestFactory.setReadTimeout(300000);
-        return new RestTemplate(requestFactory);
-    }
-
-    private void settingMessageConvertersToSpecifyType(RestTemplate restTemplate, MediaType mediaType) {
-        List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
-        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
-        converter.setSupportedMediaTypes(Collections.singletonList(mediaType));
-        messageConverters.add(converter);
-        restTemplate.setMessageConverters(messageConverters);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/security/provider/OtpAuthenticationProvider.java b/pamapi/src/main/java/com/pollex/pam/security/provider/OtpAuthenticationProvider.java
index 3802087..c76937e 100644
--- a/pamapi/src/main/java/com/pollex/pam/security/provider/OtpAuthenticationProvider.java
+++ b/pamapi/src/main/java/com/pollex/pam/security/provider/OtpAuthenticationProvider.java
@@ -1,6 +1,7 @@
 package com.pollex.pam.security.provider;
 
-import com.pollex.pam.web.rest.errors.CustomerNotRegisteredException;
+import com.pollex.pam.business.web.errors.CustomerNotRegisteredException;
+import com.pollex.pam.security.token.OtpAuthenticationToken;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -8,13 +9,12 @@
 import org.springframework.security.core.AuthenticationException;
 import org.springframework.stereotype.Component;
 
-import com.pollex.pam.domain.Customer;
-import com.pollex.pam.repository.CustomerRepository;
-import com.pollex.pam.security.token.OtpAuthenticationToken;
+import com.pollex.pam.business.domain.Customer;
+import com.pollex.pam.business.repository.CustomerRepository;
 import com.pollex.pam.service.CustomerAuthService;
-import com.pollex.pam.service.OtpTmpService;
+import com.pollex.pam.business.service.OtpTmpService;
 import com.pollex.pam.service.OtpUtilService;
-import com.pollex.pam.web.rest.vm.OtpAccount;
+import com.pollex.pam.business.web.vm.OtpAccount;
 
 @Component
 public class OtpAuthenticationProvider {
diff --git a/pamapi/src/main/java/com/pollex/pam/security/token/EServiceAuthenticationToken.java b/pamapi/src/main/java/com/pollex/pam/security/token/EServiceAuthenticationToken.java
deleted file mode 100644
index 6bc8410..0000000
--- a/pamapi/src/main/java/com/pollex/pam/security/token/EServiceAuthenticationToken.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.pollex.pam.security.token;
-
-import org.springframework.security.authentication.AbstractAuthenticationToken;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.SpringSecurityCoreVersion;
-import org.springframework.util.Assert;
-
-import java.util.Collection;
-
-public class EServiceAuthenticationToken extends AbstractAuthenticationToken {
-
-    private static final long serialVersionUID = SpringSecurityCoreVersion.SERIAL_VERSION_UID;
-
-    private final String principle;
-    private String credentials;
-
-    public EServiceAuthenticationToken(String principle, String credentials) {
-        super(null);
-        this.principle = principle;
-        this.credentials = credentials;
-        setAuthenticated(false);
-    }
-
-    public EServiceAuthenticationToken(String principle, String credentials, Collection<? extends GrantedAuthority> authorities) {
-        super(authorities);
-        this.principle = principle;
-        this.credentials = credentials;
-        setAuthenticated(true);
-    }
-
-    @Override
-    public String getCredentials() {
-        return credentials;
-    }
-
-    @Override
-    public String getPrincipal() {
-        return principle;
-    }
-
-    @Override
-    public void setAuthenticated(boolean isAuthenticated) throws IllegalArgumentException {
-        Assert.isTrue(!isAuthenticated,
-            "Cannot set this token to trusted - use constructor which takes a GrantedAuthority list instead");
-        super.setAuthenticated(false);
-    }
-
-    @Override
-    public void eraseCredentials() {
-        super.eraseCredentials();
-        this.credentials = null;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/security/token/OtpAuthenticationToken.java b/pamapi/src/main/java/com/pollex/pam/security/token/OtpAuthenticationToken.java
index 9652e9c..a4c450c 100644
--- a/pamapi/src/main/java/com/pollex/pam/security/token/OtpAuthenticationToken.java
+++ b/pamapi/src/main/java/com/pollex/pam/security/token/OtpAuthenticationToken.java
@@ -1,12 +1,9 @@
 package com.pollex.pam.security.token;
 
-import com.pollex.pam.web.rest.vm.OtpAccount;
+import com.pollex.pam.business.web.vm.OtpAccount;
 import org.springframework.security.authentication.AbstractAuthenticationToken;
-import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.SpringSecurityCoreVersion;
 import org.springframework.util.Assert;
-
-import java.util.Collection;
 
 public class OtpAuthenticationToken extends AbstractAuthenticationToken {
 
diff --git a/pamapi/src/main/java/com/pollex/pam/service/AppointmentClosedInfoService.java b/pamapi/src/main/java/com/pollex/pam/service/AppointmentClosedInfoService.java
deleted file mode 100644
index 9931a44..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/AppointmentClosedInfoService.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.pollex.pam.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.pollex.pam.domain.AppointmentClosedInfo;
-import com.pollex.pam.repository.AppointmentClosedInfoRepository;
-import com.pollex.pam.web.rest.errors.AppointmentClosedInfoNotFoundException;
-
-@Service
-@Transactional
-public class AppointmentClosedInfoService {
-	
-	@Autowired
-	AppointmentClosedInfoRepository appointmentClosedInfoRepository;
-	
-	public AppointmentClosedInfo findByAppointmentId(Long apId) {
-		return appointmentClosedInfoRepository.findByAppointmentId(apId)
-				.orElseThrow(AppointmentClosedInfoNotFoundException::new);
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/AppointmentMemoService.java b/pamapi/src/main/java/com/pollex/pam/service/AppointmentMemoService.java
deleted file mode 100644
index 6fdd613..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/AppointmentMemoService.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.pollex.pam.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.AppointmentMemo;
-import com.pollex.pam.repository.AppointmentMemoRepository;
-import com.pollex.pam.repository.AppointmentRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.AppointmentMemoCreateDTO;
-import com.pollex.pam.service.dto.AppointmentMemoUpdateDTO;
-import com.pollex.pam.service.mapper.AppointmentMemoMapper;
-import com.pollex.pam.web.rest.errors.AppointmentMemoNotFoundException;
-import com.pollex.pam.web.rest.errors.AppointmentNotFoundException;
-
-@Service
-@Transactional
-public class AppointmentMemoService {
-	
-	@Autowired
-	AppointmentMemoRepository appointmentMemoRepository;
-	
-	@Autowired
-	AppointmentMemoMapper appointmentMemoMapper;
-	
-	@Autowired
-	AppointmentRepository appointmentRepository;
-
-	public AppointmentMemo create(AppointmentMemoCreateDTO memoDTO) {
-		AppointmentMemo memo = appointmentMemoMapper.toAppointmentMemo(memoDTO);
-		return appointmentMemoRepository.save(memo);
-	}
-
-	public void checkPermission(Long appointmentId) {
-		Appointment appointment = appointmentRepository.findById(appointmentId)
-				.orElseThrow(AppointmentNotFoundException::new);
-		if(!appointment.getAgentNo().equals(SecurityUtils.getAgentNo())) {
-			throw new IllegalAccessError("not have permission");
-		}
-	}
-
-	public AppointmentMemo update(AppointmentMemoUpdateDTO memoDTO) {
-		AppointmentMemo memo = appointmentMemoRepository
-				.findById(memoDTO.getId())
-				.orElseThrow(AppointmentMemoNotFoundException::new);
-		checkPermission(memo.getAppointmentId());
-		appointmentMemoMapper.copyToAppointmentMemo(memoDTO, memo);
-		return appointmentMemoRepository.save(memo);
-	}
-
-	public void delete(Long memoId) {
-		AppointmentMemo memo = appointmentMemoRepository
-				.findById(memoId)
-				.orElseThrow(AppointmentMemoNotFoundException::new);
-		checkPermission(memo.getAppointmentId());
-		appointmentMemoRepository.delete(memo);
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/AppointmentNoticeLogService.java b/pamapi/src/main/java/com/pollex/pam/service/AppointmentNoticeLogService.java
deleted file mode 100644
index bfb0134..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/AppointmentNoticeLogService.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.pollex.pam.service;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.pollex.pam.domain.AppointmentNoticeLog;
-import com.pollex.pam.repository.AppointmentNoticeLogRepository;
-import com.pollex.pam.service.dto.AppointmentNoticeSendDTO;
-import com.pollex.pam.service.mapper.AppointmentNoticeSendMapper;
-
-@Service
-@Transactional
-public class AppointmentNoticeLogService {
-	
-	@Autowired
-	AppointmentNoticeLogRepository appointmentNoticeLogRepository;
-	
-	@Autowired
-	AppointmentNoticeSendMapper appointmentNoticeSendMapper;
-
-	public AppointmentNoticeLog create(AppointmentNoticeSendDTO noticeSendDTO) {
-		AppointmentNoticeLog appointmentNoticeLog = 
-				appointmentNoticeSendMapper.toAppointmentNoticeLog(noticeSendDTO);
-		return appointmentNoticeLogRepository.save(appointmentNoticeLog);
-	}
-	
-	public List<AppointmentNoticeLog> findByAppointmentId(Long appointmentId){
-		return appointmentNoticeLogRepository.findByAppointmentId(appointmentId);
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java b/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java
deleted file mode 100644
index fe55f38..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/AppointmentService.java
+++ /dev/null
@@ -1,319 +0,0 @@
-package com.pollex.pam.service;
-
-import java.time.Instant;
-import java.time.LocalDate;
-import java.time.ZoneId;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import com.pollex.pam.appointment.process.AppointmentProcess;
-import com.pollex.pam.config.ApplicationProperties;
-import com.pollex.pam.config.Constants;
-import com.pollex.pam.enums.SatisfactionTypeEnum;
-import com.pollex.pam.service.dto.*;
-import com.pollex.pam.web.rest.errors.SendEmailFailException;
-import com.pollex.pam.web.rest.errors.SendSMSFailException;
-import io.jsonwebtoken.lang.Assert;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.AppointmentCustomerView;
-import com.pollex.pam.enums.ContactStatusEnum;
-import com.pollex.pam.enums.InterviewRecordStatusEnum;
-import com.pollex.pam.repository.AppointmentCustomerViewRepository;
-import com.pollex.pam.repository.AppointmentRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.mapper.AppointmentCustomerViewMapper;
-import com.pollex.pam.service.mapper.AppointmentDTOMapper;
-import com.pollex.pam.web.rest.errors.AppointmentNotFoundException;
-import org.springframework.util.StringUtils;
-import org.thymeleaf.context.Context;
-import org.thymeleaf.spring5.SpringTemplateEngine;
-
-import static com.pollex.pam.enums.AppointmentStatusEnum.AVAILABLE;
-import static com.pollex.pam.enums.AppointmentStatusEnum.DELETED;
-
-@Service
-@Transactional
-public class AppointmentService {
-
-    private static final Logger log = LoggerFactory.getLogger(AppointmentService.class);
-
-    private static final String NOTIFY_EMAIL_SUBJECT = "靽���像�蝟餌絞�嚗���";
-
-    @Autowired
-	AppointmentRepository appointmentRepository;
-
-	@Autowired
-	AppointmentDTOMapper appointmentDTOMapper;
-
-	@Autowired
-	ConsultantService consultantService;
-
-	@Autowired
-	AppointmentCustomerViewMapper appointmentCustomerViewMapper;
-
-	@Autowired
-	AppointmentCustomerViewRepository appointmentCustomerViewRepository;
-
-	@Autowired
-	SatisfactionService satisfactionService;
-
-    @Autowired
-    SendMsgService sendMsgService;
-
-    @Autowired
-    ApplicationProperties applicationProperties;
-
-    @Autowired
-    SpringTemplateEngine springTemplateEngine;
-
-    @Autowired
-    InterviewRecordService interviewRecordService;
-
-    @Autowired
-    AppointmentProcess abstractAppointmentProcess;
-
-    @Autowired
-    PersonalNotificationService personalNotificationService;
-
-	public Appointment customerCreateAppointment(AppointmentCreateDTO appointmentCreateDTO) {
-		Appointment appointment = appointmentDTOMapper.toAppointment(appointmentCreateDTO);
-        appointment.setStatus(AVAILABLE);
-		appointment.setCustomerId(SecurityUtils.getCustomerDBId());
-		appointment.setCommunicateStatus(ContactStatusEnum.RESERVED);
-		return appointmentRepository.save(appointment);
-	}
-
-    public Appointment updateAppointment(AppointmentUpdateDTO updateAppointmentDTO) {
-        Appointment appointment = appointmentRepository.findById(updateAppointmentDTO.getId()).get();
-        BeanUtils.copyProperties(updateAppointmentDTO, appointment);
-        appointment.setPhone(updateAppointmentDTO.getPhone());
-        appointment.setEmail(updateAppointmentDTO.getEmail());
-        appointment.setContactType(updateAppointmentDTO.getContactType());
-        appointment.setGender(updateAppointmentDTO.getGender());
-        appointment.setAge(updateAppointmentDTO.getAge());
-        appointment.setJob(updateAppointmentDTO.getJob());
-        appointment.setRequirement(updateAppointmentDTO.getRequirement());
-        appointment.setHopeContactTime(updateAppointmentDTO.getHopeContactTime());
-        appointment.setOtherRequirement(updateAppointmentDTO.getOtherRequirement());
-        appointment.setLastModifiedDate(Instant.now());
-
-        return appointmentRepository.save(appointment);
-    }
-
-    public void markAppointmentDeleted(Long appointmentId) {
-        Appointment appointment = appointmentRepository.findById(appointmentId).get();
-        appointment.setStatus(DELETED);
-        appointment.setLastModifiedDate(Instant.now());
-        appointment.setCommunicateStatus(ContactStatusEnum.CANCEL);
-        appointmentRepository.save(appointment);
-        personalNotificationService.createMarkAppointmentDeletedToConsultant(appointment);
-
-    }
-
-	public List<Appointment> findByAgentNo(String agentNo) {
-		return appointmentRepository.findByAgentNo(agentNo);
-	}
-
-	public Appointment markAsContacted(Long appointmentId) {
-		Appointment appointment = appointmentRepository.findById(appointmentId).get();
-		appointment.setCommunicateStatus(ContactStatusEnum.CONTACTED);
-        appointment.setContactTime(Instant.now());
-        appointment.setLastModifiedDate(Instant.now());
-        return appointmentRepository.save(appointment);
-	}
-
-	public AppointmentCustomerViewDTO getAppointmentDetail(Long appointmentId) {
-		AppointmentCustomerView appointment = appointmentCustomerViewRepository.findById(appointmentId)
-				.orElseThrow(AppointmentNotFoundException::new);
-
-        AppointmentCustomerViewDTO dto = appointmentCustomerViewMapper.toAppointmentCustomerViewDTO(appointment);
-        setSatisfactionScore(dto, appointmentId);
-//        setInterviewRecordDTO(dto);
-		return dto;
-	}
-
-    public void setInterviewRecordDTO(AppointmentCustomerViewDTO dto) {
-    	List<InterviewRecordDTO> interviewRecords = interviewRecordService.findByAppointmentIdAndStatus(dto.getId(), InterviewRecordStatusEnum.AVAILABLE);
-    	dto.setInterviewRecordDTOs(interviewRecords);
-    }
-
-	public List<AppointmentCustomerViewDTO> getConsultantAvailableAppointments(String agentNo) {
-        return appointmentCustomerViewRepository.findByAgentNo(agentNo).stream()
-            .filter(appointment -> appointment.getStatus() == AVAILABLE)
-            .map(appointmentCustomerView -> {
-                AppointmentCustomerViewDTO dto = appointmentCustomerViewMapper.toAppointmentCustomerViewDTO(appointmentCustomerView);
-                setSatisfactionScore(dto, appointmentCustomerView.getId());
-                return dto;
-            })
-            .collect(Collectors.toList());
-    }
-
-    public void setSatisfactionScore(AppointmentCustomerViewDTO dto, Long appointmentId) {
-        satisfactionService.getByAppointmentIdAndType(appointmentId, SatisfactionTypeEnum.APPOINTMENT).ifPresent(satisfaction -> {
-            dto.setSatisfactionScore(satisfaction.getScore());
-        });
-    }
-
-    public List<AppointmentCustomerView> findAvailableByAgentNoAndCustomerId(String agentNo, Long customerId) {
-        return appointmentCustomerViewRepository.findByAgentNoAndCustomerId(agentNo, customerId)
-            .stream()
-            .filter(appointmentCustomerView -> appointmentCustomerView.getStatus() == AVAILABLE)
-            .collect(Collectors.toList());
-    }
-
-    public Optional<Appointment> findLatestAppointmentByAgentNoAndCustomerId(String agentNo, Long customerId) {
-        return appointmentRepository.findTopByAgentNoAndCustomerIdOrderByAppointmentDateDesc(agentNo, customerId);
-    }
-
-    public void recordConsultantReadTime(Long appointmentId) {
-        Appointment appointment = appointmentRepository.findById(appointmentId).get();
-
-        if(appointment.getConsultantReadTime() == null) {
-            appointment.setConsultantReadTime(Instant.now());
-            appointmentRepository.save(appointment);
-        }
-        else {
-            log.debug("this appointment was read, read time = {}", appointment.getConsultantReadTime());
-        }
-    }
-
-    public void recordAllAppointmentsView(String agentNo) {
-        List<Appointment> consultantNotViewAppointments = findByAgentNo(agentNo)
-            .stream()
-            .filter(appointment -> Objects.isNull(appointment.getConsultantViewTime()))
-            .collect(Collectors.toList());
-
-        consultantNotViewAppointments.forEach(appointment -> appointment.setConsultantViewTime(Instant.now()));
-        appointmentRepository.saveAll(consultantNotViewAppointments);
-    }
-
-    public void sendAppointmentNotify(Appointment appointment) {
-        Assert.notNull(appointment, "appointment entity cannot be null");
-
-        log.debug("is need send appointment notify msg? sms = {}, email = {}",
-            applicationProperties.getSms().isSendNotifyMsg(), applicationProperties.getEmail().isSendNotifyMsg());
-
-        log.debug("sending appointment notify, appointmentId = {}", appointment.getId());
-        sendAppointmentNotifyBySMS(appointment);
-        sendAppointmentNotifyByHtmlEmail(appointment);
-    }
-
-    private void sendAppointmentNotifyBySMS(Appointment appointment) {
-        String msg = getAppointmentNotifyWording(appointment);
-        String consultantMobile = consultantService.findByAgentNo(appointment.getAgentNo()).getPhoneNumber();
-
-        try {
-            if(!StringUtils.hasText(consultantMobile)) {
-                throw new SendSMSFailException("the consultant does not have mobile!");
-            }
-
-            sendMsgService.sendMsgBySMS(consultantMobile, msg);
-        } catch (SendSMSFailException e) {
-            log.warn("send appointment notify by sms was fail, appointment Id = {}", appointment.getId(), e);
-        }
-    }
-
-    private String getAppointmentNotifyWording(Appointment appointment) {
-        String normalContent;
-        if(StringUtils.hasText(appointment.getPhone())) {
-            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像��������恥�����Ⅳ�" + appointment.getPhone();
-        }
-        else {
-            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像������";
-        }
-
-        String urlContent = "嚗���雯��嚗�" + getAppointmentDetailUrl(appointment.getId()) + "����蒂摰�蝯∟赤隢�����";
-        return normalContent + urlContent;
-    }
-
-    private void sendAppointmentNotifyByHtmlEmail(Appointment appointment) {
-       String consultantEmail = consultantService.findByAgentNo(appointment.getAgentNo()).getEmail();
-        String customerMobile = appointment.getPhone();
-        String normalContent;
-
-        if(StringUtils.hasText(customerMobile)) {
-            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像��������恥�����Ⅳ�" + customerMobile + "嚗�";
-        }
-        else {
-            normalContent = "閬芣��“��憟踝����蝑�靽�犖憯賢��像�������";
-        }
-
-        Context context = new Context();
-        context.setVariable("content", normalContent);
-        context.setVariable("urlHint", getAppointmentDetailUrl(appointment.getId()));
-        String content = springTemplateEngine.process("mail/appointmentNotifyEmail", context);
-
-        try {
-            if(!StringUtils.hasText(consultantEmail)) {
-                throw new SendEmailFailException("the consultant does not have email!");
-            }
-
-            sendMsgService.sendMsgByEmail(consultantEmail, NOTIFY_EMAIL_SUBJECT, content, true);
-        } catch (SendEmailFailException e) {
-            log.warn("send appointment notify by email was fail, appointment Id = {}", appointment.getId(), e);
-        }
-    }
-
-    public String getAppointmentDetailUrl(Long appointmentId) {
-        return applicationProperties.getFrontEndDomain() + "/myAppointmentList/contactedList?appointmentId=" + appointmentId;
-    }
-
-    public Appointment findById(Long id) {
-    	return appointmentRepository.findById(id)
-    			.orElseThrow(AppointmentNotFoundException::new);
-    }
-
-	public void closeAppointment(AppointmentCloseDTO closeDTO) {
-		if(closeDTO.getContactStatus() == ContactStatusEnum.DONE) {
-			DoneProcessDTO dto = new DoneProcessDTO();
-			BeanUtils.copyProperties(closeDTO, dto);
-			abstractAppointmentProcess.process(dto);
-		}else if(closeDTO.getContactStatus() == ContactStatusEnum.CLOSED){
-			ClosedProcessDTO dto = new ClosedProcessDTO();
-			BeanUtils.copyProperties(closeDTO, dto);
-			abstractAppointmentProcess.process(dto);
-		}
-	}
-
-    public Long getConsultantPendingAppointmentSum(String agentNo) {
-        return appointmentCustomerViewRepository.findAllByCommunicateStatusAndStatus(ContactStatusEnum.RESERVED, AVAILABLE)
-                .stream()
-                .filter(appointment -> agentNo.equals(appointment.getAgentNo()))
-                .filter(appointment -> isAppointmentDateNotInIntervalFromNow(appointment, Constants.APPOINTMENT_PENDING_PHONE_INTERVAL, Constants.APPOINTMENT_PENDING_EMAIL_INTERVAL))
-                .count();
-    }
-
-    public AppointmentCustomerViewDTO getCustomerNewestExpiringAppointment(Long customerId) {
-        return appointmentCustomerViewRepository.findAllByCommunicateStatusAndStatus(ContactStatusEnum.RESERVED, AVAILABLE)
-                .stream()
-                .filter(appointment -> customerId.equals(appointment.getCustomerId()))
-                .filter(appointment -> isAppointmentDateNotInIntervalFromNow(appointment, Constants.APPOINTMENT_EXPIRING_PHONE_INTERVAL, Constants.APPOINTMENT_EXPIRING_EMAIL_INTERVAL))
-                .max(Comparator.comparing(AppointmentCustomerView::getAppointmentDate))
-                .map(appointmentCustomerView -> appointmentCustomerViewMapper.toAppointmentCustomerViewDTO(appointmentCustomerView))
-                .orElse(null);
-    }
-
-    public boolean isAppointmentDateNotInIntervalFromNow(AppointmentCustomerView appointment, int phoneInterval, int emailInterval) {
-        final boolean isHavePhone = StringUtils.hasText(appointment.getPhone());
-        final boolean isHaveEmail = StringUtils.hasText(appointment.getEmail());
-
-        LocalDate appointmentDate = appointment.getAppointmentDate().atZone(ZoneId.systemDefault()).toLocalDate();
-        LocalDate nowDate = Instant.now().atZone(ZoneId.systemDefault()).toLocalDate();
-        long intervalDays = nowDate.toEpochDay() - appointmentDate.toEpochDay();
-
-        final boolean isAppointmentExpiringByPhone = isHavePhone && intervalDays >= phoneInterval;
-        final boolean isAppointmentExpiringByEmail = isHaveEmail && intervalDays >= emailInterval;
-
-        return isAppointmentExpiringByPhone || isAppointmentExpiringByEmail;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java b/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java
deleted file mode 100644
index b9cba74..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/ConsultantQuerySpec.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.pollex.pam.service;
-
-import com.pollex.pam.domain.Consultant;
-import com.pollex.pam.enums.ConsultantStatusEnum;
-import com.pollex.pam.service.dto.FastQueryConsultantParam;
-import com.pollex.pam.service.dto.StrictQueryConsultantParam;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.data.jpa.domain.Specification;
-
-import javax.persistence.criteria.*;
-import java.util.*;
-
-import static com.pollex.pam.consts.SeniorityQueryConst.*;
-
-public class ConsultantQuerySpec {
-    private ConsultantQuerySpec() {
-    }
-
-    public static Specification<Consultant> getFastQuerySpec(FastQueryConsultantParam param) {
-        return new Specification<Consultant>() {
-            @SuppressWarnings("FieldNameHidesFieldInSuperclass")
-            private static final long serialVersionUID = 6644524130903161741L;
-            private static final float QUERY_AVG_SCORE_OFFSET = 0.5f;
-
-            @Override
-            public Predicate toPredicate(Root<Consultant> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
-                Set<Predicate> set = new HashSet<>();
-
-                set.add(criteriaBuilder.equal(root.get("status"), ConsultantStatusEnum.AVAILABLE));
-
-                param.getCommunicationStyles().forEach((communicationStyle) -> {
-                    set.add(criteriaBuilder.like(root.get("communicationStyle"), "%" + communicationStyle + "%"));
-                });
-
-                if(Objects.nonNull(param.getGender())) {
-                    set.add(criteriaBuilder.equal(root.get("gender"), param.getGender()));
-                }
-
-                if(Objects.nonNull(param.getAvgScore()) && param.getAvgScore().intValue() != 0) {
-                    set.add(criteriaBuilder.greaterThanOrEqualTo(root.get("avgScore"), param.getAvgScore().intValue() - QUERY_AVG_SCORE_OFFSET));
-                }
-
-                if(StringUtils.isNotEmpty(param.getSeniority()) && !StringUtils.equals(UNLIMITED, param.getSeniority())) {
-                    if(YOUNG.equals(param.getSeniority())) {
-                        set.add(criteriaBuilder.lessThanOrEqualTo(root.get("seniorityYear"), 5));
-                    }
-                    else if(SENIOR.equals(param.getSeniority())) {
-                        set.add(criteriaBuilder.greaterThan(root.get("seniorityYear"), 5));
-                    }
-                }
-
-                Predicate[] predicates = new Predicate[set.size()];
-                predicates = set.toArray(predicates);
-                return criteriaBuilder.and(predicates);
-            }
-        };
-    }
-
-    public static Specification<Consultant> getStrictQuerySpec(StrictQueryConsultantParam param) {
-        return new Specification<Consultant>() {
-            @SuppressWarnings("FieldNameHidesFieldInSuperclass")
-            private static final long serialVersionUID = 664452413090316174L;
-
-            @Override
-            public Predicate toPredicate(Root<Consultant> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
-                Set<Predicate> set = new HashSet<>();
-
-                set.add(criteriaBuilder.equal(root.get("status"), ConsultantStatusEnum.AVAILABLE));
-
-                if(Objects.nonNull(param.getGender())) {
-                    set.add(criteriaBuilder.equal(root.get("gender"), param.getGender()));
-                }
-
-                if(StringUtils.isNotEmpty(param.getArea())) {
-                    set.add(criteriaBuilder.like(root.get("serveArea"), "%" + param.getArea() + "%"));
-                }
-
-                Predicate[] predicates = new Predicate[set.size()];
-                predicates = set.toArray(predicates);
-                return criteriaBuilder.and(predicates);
-            }
-        };
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java b/pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java
deleted file mode 100644
index 0c9242c..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/ConsultantService.java
+++ /dev/null
@@ -1,371 +0,0 @@
-package com.pollex.pam.service;
-
-import com.pollex.pam.config.ApplicationProperties;
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.AppointmentCustomerView;
-import com.pollex.pam.domain.Consultant;
-import com.pollex.pam.domain.CustomerFavoriteConsultant;
-import com.pollex.pam.domain.Satisfaction;
-import com.pollex.pam.enums.ConsultantStatusEnum;
-import com.pollex.pam.enums.ContactStatusEnum;
-import com.pollex.pam.repository.ConsultantRepository;
-import com.pollex.pam.repository.CustomerFavoriteConsultantRepository;
-import com.pollex.pam.repository.SatisfactionRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.*;
-import com.pollex.pam.service.mapper.AppointmentCustomerViewMapper;
-import com.pollex.pam.service.mapper.ConsultantDTOMapper;
-import com.pollex.pam.service.mapper.ConsultantMapper;
-import com.pollex.pam.service.util.FileUtil;
-import com.pollex.pam.web.rest.errors.ConsultantNotFoundException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
-import org.thymeleaf.context.Context;
-import org.thymeleaf.spring5.SpringTemplateEngine;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.InputStream;
-import java.math.BigDecimal;
-import java.time.Instant;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import static com.pollex.pam.consts.SeniorityQueryConst.*;
-import static com.pollex.pam.enums.ContactStatusEnum.*;
-
-@Service
-@Transactional
-public class ConsultantService {
-
-    private static final Logger log = LoggerFactory.getLogger(ConsultantService.class);
-
-    @Autowired
-    ConsultantRepository consultantRepository;
-
-    @Autowired
-    CustomerFavoriteConsultantRepository customerFavoriteConsultantRepository;
-
-    @Autowired
-    ConsultantMapper consultantMapper;
-
-    @Autowired
-    AppointmentService appointmentService;
-
-    @Autowired
-    AppointmentCustomerViewMapper appointmentCustomerViewMapper;
-
-    @Autowired
-    SatisfactionService satisfactionService;
-
-    @Autowired
-    ConsultantDTOMapper consultantDTOMapper;
-
-    @Autowired
-    ApplicationProperties applicationProperty;
-
-    @Autowired
-	SendMsgService sendMsgService;
-
-    @Autowired
-    SpringTemplateEngine springTemplateEngine;
-
-    @Autowired
-    ApplicationProperties applicationProperties;
-
-    @Autowired
-    ConsultantService consultantService;
-
-    @Autowired
-    SatisfactionRepository satisfactionRepository;
-
-    @Autowired
-    PersonalNotificationService personalNotificationService;
-
-    public List<CustomerFavoriteConsultantDTO> getMyConsultantList() {
-        Long customerId = SecurityUtils.getCustomerDBId();
-
-        return customerFavoriteConsultantRepository.findAllByCustomerId(customerId)
-            .stream()
-            .map(relation -> {
-                Consultant consultant = relation.getConsultant();
-                CustomerFavoriteConsultantDTO dto = consultantMapper.toCustomerFavoriteConsultantDto(consultant);
-                dto.setCreateTime(relation.getCreatedDate());
-                dto.setUpdateTime(relation.getCreatedDate());
-                dto.setCustomerViewTime(relation.getViewTime());
-
-                setInfoByAvailableAppointment(
-                    dto,
-                    appointmentService.findAvailableByAgentNoAndCustomerId(consultant.getAgentNo(), customerId)
-                );
-
-                setFavoriteConsultantUpdatedTime(relation, dto);
-
-                return dto;
-
-            }).collect(Collectors.toList());
-    }
-
-	public void setFavoriteConsultantUpdatedTime(CustomerFavoriteConsultant relation,
-			CustomerFavoriteConsultantDTO dto) {
-		Consultant consultant = relation.getConsultant();
-		appointmentService.findLatestAppointmentByAgentNoAndCustomerId(consultant.getAgentNo(), relation.getCustomerId())
-		    .ifPresent(latestAppointment -> {
-		        dto.setUpdateTime(latestAppointment.getLastModifiedDate());
-		    });
-
-		if(dto.getUpdateTime().isBefore(relation.getCreatedDate())) {
-		    dto.setUpdateTime(relation.getCreatedDate());
-		}
-	}
-
-    private void setInfoByAvailableAppointment(CustomerFavoriteConsultantDTO customerFavoriteConsultantDTO, List<AppointmentCustomerView> appointmentList) {
-        List<AppointmentCustomerView> appointments = appointmentList.stream()
-            .sorted(Comparator.comparing(AppointmentCustomerView::getAppointmentDate).reversed())
-            .collect(Collectors.toList());
-
-        List<AppointmentCustomerViewDTO> appointmentCustomerViewDTOS = appointmentCustomerViewMapper.toAppointmentCustomerViewDTO(appointments);
-        customerFavoriteConsultantDTO.setAppointments(appointmentCustomerViewDTOS);
-
-        if (!appointments.isEmpty()) {
-            AppointmentCustomerView latestAvailableAppointment = appointments.get(0);
-            ContactStatusEnum latestStatus = latestAvailableAppointment.getCommunicateStatus();
-            if(latestStatus != ContactStatusEnum.DONE && latestStatus != ContactStatusEnum.CLOSED)
-                customerFavoriteConsultantDTO.setContactStatus(latestStatus);
-            else
-                customerFavoriteConsultantDTO.setContactStatus(PICKED);
-        }else {
-        	customerFavoriteConsultantDTO.setContactStatus(PICKED);
-        }
-    }
-
-    public List<ConsultantDTO> getRecommendConsultantList() {
-        return consultantRepository.findAllByRecommendIsTrue()
-            .stream()
-            .filter(consultant -> consultant.getStatus() == ConsultantStatusEnum.AVAILABLE)
-            .map(consultantMapper::toDto)
-            .collect(Collectors.toList());
-    }
-
-    public List<ConsultantDTO> strictQueryConsultant(StrictQueryConsultantParam param) {
-        return consultantRepository.findAll(ConsultantQuerySpec.getStrictQuerySpec(param))
-            .stream()
-            .map(consultant -> {
-                int suitabilityScore = getStrictQuerySuitabilityScore(param, consultant);
-
-                ConsultantDTO dto = consultantMapper.toDto(consultant);
-                dto.setSuitability(suitabilityScore);
-
-                return dto;
-            })
-            .collect(Collectors.toList());
-    }
-
-    private int getStrictQuerySuitabilityScore(StrictQueryConsultantParam param, Consultant consultant) {
-        final float QUERY_AVG_SCORE_OFFSET = 0.5f;
-        Float queryAvgScore = param.getAvgScore() - QUERY_AVG_SCORE_OFFSET;
-        String querySeniority = param.getSeniority();
-        List<String> queryRequirements = param.getRequirements();
-
-        int score = 0;
-        if(isConsultantGreaterThanScore(queryAvgScore, consultant.getAvgScore())) {
-            score += 30;
-        }
-
-        if(isConsultantInSeniority(querySeniority, consultant.getSeniorityYear())) {
-            score += 20;
-        }
-
-        if(isAllRequirementsIncludeConsultant(queryRequirements, consultant.getExpertise())) {
-            score += 50;
-        }
-
-        return score;
-    }
-
-    private boolean isAllRequirementsIncludeConsultant(List<String> queryRequirements, String consultantExpertise) {
-        return queryRequirements
-            .stream()
-            .allMatch(queryRequirement -> consultantExpertise.matches(".*"+queryRequirement+".*"));
-    }
-
-    private boolean isConsultantInSeniority(String querySeniority, Long consultantSeniorityYear) {
-        switch (querySeniority == null ? "" : querySeniority) {
-            case YOUNG:
-                return consultantSeniorityYear < 5;
-            case SENIOR:
-                return consultantSeniorityYear > 5;
-            case UNLIMITED:
-            case "":
-                return true;
-            default:
-                return false;
-        }
-    }
-
-    private boolean isConsultantGreaterThanScore(Float queryAvgScore, Float consultantAvgScore) {
-        return Objects.isNull(queryAvgScore) || queryAvgScore < consultantAvgScore;
-    }
-
-    public List<ConsultantDTO> fastQueryConsultant(FastQueryConsultantParam param) {
-        return consultantRepository.findAll(ConsultantQuerySpec.getFastQuerySpec(param))
-            .stream()
-            .map(consultantMapper::toDto)
-            .collect(Collectors.toList());
-    }
-
-    public ConsultantDetailDTO getConsultantDetail(String agentNo) {
-        Consultant consultant = consultantRepository.findOneByAgentNo(agentNo).orElseThrow(ConsultantNotFoundException::new);
-        return consultantMapper.toDetailDto(consultant);
-    }
-
-    @Transactional
-    public void addConsultantToCustomList(AddConsultantParam param) {
-        Long userId = SecurityUtils.getCustomerDBId();
-
-        param.getConsultantList().forEach(addConsultantData -> {
-            Consultant consultant = consultantRepository.findOneByAgentNo(addConsultantData.getAgentNo()).orElseThrow(ConsultantNotFoundException::new);
-            boolean isConsultantInList = customerFavoriteConsultantRepository.findOneByCustomerIdAndConsultant(userId, consultant).isPresent();
-
-            if(!isConsultantInList) {
-                CustomerFavoriteConsultant customerFavoriteConsultant = new CustomerFavoriteConsultant();
-                Optional<Instant> createdTime = Optional.ofNullable(addConsultantData.getCreatedTime());
-
-                customerFavoriteConsultant.setCreatedDate(createdTime.orElse(Instant.now()));
-                customerFavoriteConsultant.setConsultant(consultant);
-                customerFavoriteConsultant.setCustomerId(userId);
-
-                customerFavoriteConsultantRepository.save(customerFavoriteConsultant);
-            }
-            else {
-                log.info("The consultant is in customer favorite list! customId = {}, consultant AgentNo = {}", userId, consultant.getAgentNo());
-            }
-        });
-    }
-
-	public List<AppointmentCustomerViewDTO> getMyAppointment() {
-		String agentNo = SecurityUtils.getAgentNo();
-		return appointmentService.getConsultantAvailableAppointments(agentNo);
-	}
-
-    public void removeConsultantFromCustomList(String agentNo) {
-        Long customId = SecurityUtils.getCustomerDBId();
-        Consultant consultant = consultantRepository.findOneByAgentNo(agentNo).orElseThrow(ConsultantNotFoundException::new);
-        CustomerFavoriteConsultant target = customerFavoriteConsultantRepository.findOneByCustomerIdAndConsultant(customId, consultant).orElse(null);
-
-        if(target != null) {
-            customerFavoriteConsultantRepository.delete(target);
-        }
-        else {
-            log.info("this consultant is not in customer list! agentNo = {}, customId = {}", agentNo, customId);
-        }
-    }
-
-    public void recordAllAppointmentsView() {
-        String agentNo = SecurityUtils.getAgentNo();
-        appointmentService.recordAllAppointmentsView(agentNo);
-    }
-
-    public void recordMyConsultantListView() {
-        Long customerId = SecurityUtils.getCustomerDBId();
-        List<CustomerFavoriteConsultant> notViewRelation = customerFavoriteConsultantRepository
-            .findAllByCustomerId(customerId)
-            .stream()
-            .filter(relation -> Objects.isNull(relation.getViewTime()))
-            .collect(Collectors.toList());
-
-        notViewRelation.forEach(relation -> {
-            relation.setViewTime(Instant.now());
-        });
-
-        customerFavoriteConsultantRepository.saveAll(notViewRelation);
-    }
-
-    public Consultant findByAgentNo(String agentNo) {
-        return consultantRepository.findOneByAgentNo(agentNo).get();
-    }
-
-	public Consultant editConsultant(ConsultantEditDTO editDTO) {
-		Consultant consultant = consultantRepository.findOneByAgentNo(editDTO.getAgentNo())
-				.orElseThrow(ConsultantNotFoundException::new);
-		consultantDTOMapper.copyToConsultant(editDTO, consultant);
-		FileUtil.base64ToFile(editDTO.getPhotoBase64(), editDTO.getPhotoFileName(), applicationProperty.getFileFolderPath());
-		consultantRepository.save(consultant);
-		personalNotificationService.createEditConsultantToConsultant(consultant);
-		return consultant;
-	}
-
-	public InputStream getAvatarImage(String agentNo) {
-		Consultant consultant = consultantRepository.findOneByAgentNo(agentNo)
-				.orElseThrow(ConsultantNotFoundException::new);
-		File file = new File(consultant.getPhotoPath());
-		try {
-			InputStream in = new FileInputStream(file);
-			return in;
-		} catch (FileNotFoundException e) {
-			log.error("agent photo not found , agentNo:"+agentNo,e);
-			return null;
-		}
-	}
-
-	public void sendSatisfactionToClient(Appointment appointment) {
-		String subject = "皛踵�漲憛怠神�";
-
-		if(StringUtils.hasText(appointment.getEmail())) {
-			String content = genSendSatisfactionEmailContent(appointment);
-			sendMsgService.sendMsgByEmail(appointment.getEmail(), subject, content, true);
-
-		}if(StringUtils.hasText(appointment.getPhone())) {
-			String content = genSendSatisfactionSMSContent(appointment);
-			sendMsgService.sendMsgBySMS(appointment.getPhone(), content);
-		}
-
-		personalNotificationService.createSendSatisfactionToClientToCustomer(appointment);
-	}
-
-	private String genSendSatisfactionSMSContent(Appointment appointment) {
-		String agentNo = appointment.getAgentNo();
-		Consultant consultant = consultantService.findByAgentNo(agentNo);
-		String contsultantName = consultant.getName();
-		String content = contsultantName+"憿批��憛怠神靽���像���遛��漲閰��"+getSendSatisfactionToClientUrl(appointment.getId());
-		return content;
-	}
-
-	private String genSendSatisfactionEmailContent(Appointment appointment) {
-		String agentNo = appointment.getAgentNo();
-		Consultant consultant = consultantService.findByAgentNo(agentNo);
-		Context context = new Context();
-        context.setVariable("consultantName", consultant.getName());
-        context.setVariable("appointmentUrl", getSendSatisfactionToClientUrl(appointment.getId()));
-        String content = springTemplateEngine.process("mail/writeSatisfactionNotice", context);
-		return content;
-	}
-
-	public String getSendSatisfactionToClientUrl(Long appointmentId) {
-        return applicationProperties.getFrontEndDomain() + "/?appointmentId=" + appointmentId;
-    }
-
-	public void setConsultantAvgScore(Satisfaction satisfaction) {
-		Optional<Float> avgScore = getAgentAvgScore(satisfaction.getAgentNo());
-
-        if(avgScore.isPresent()) {
-            BigDecimal bigDecimal = BigDecimal.valueOf(avgScore.get());
-
-            Consultant consultant = consultantRepository.findOneByAgentNo(satisfaction.getAgentNo()).get();
-            consultant.setAvgScore(bigDecimal.setScale(1, BigDecimal.ROUND_HALF_UP).floatValue());
-            consultantRepository.save(consultant);
-        }
-	}
-
-	public Optional<Float> getAgentAvgScore(String agentNo) {
-		return satisfactionRepository.getAgentScoreAvg(agentNo);
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/CustomerAuthService.java b/pamapi/src/main/java/com/pollex/pam/service/CustomerAuthService.java
index 427e102..e7d394c 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/CustomerAuthService.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/CustomerAuthService.java
@@ -15,12 +15,12 @@
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.pollex.pam.domain.Customer;
-import com.pollex.pam.enums.CustomerDetailEnum;
-import com.pollex.pam.repository.CustomerRepository;
+import com.pollex.pam.business.domain.Customer;
+import com.pollex.pam.business.enums.CustomerDetailEnum;
+import com.pollex.pam.business.repository.CustomerRepository;
 import com.pollex.pam.security.jwt.TokenProvider;
 import com.pollex.pam.security.token.OtpAuthenticationToken;
-import com.pollex.pam.web.rest.vm.OtpAccount;
+import com.pollex.pam.business.web.vm.OtpAccount;
 
 @Service
 @Transactional
diff --git a/pamapi/src/main/java/com/pollex/pam/service/CustomerService.java b/pamapi/src/main/java/com/pollex/pam/service/CustomerService.java
index 79a086d..3f1b6c4 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/CustomerService.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/CustomerService.java
@@ -2,21 +2,23 @@
 
 import java.util.Optional;
 
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.CustomerDTO;
-import com.pollex.pam.service.mapper.CustomerMapper;
+import com.pollex.pam.business.security.SecurityUtils;
+import com.pollex.pam.business.service.OtpTmpService;
+import com.pollex.pam.business.service.UsernameAlreadyUsedException;
+import com.pollex.pam.business.service.dto.CustomerDTO;
+import com.pollex.pam.business.service.mapper.CustomerMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.security.core.userdetails.UsernameNotFoundException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import com.pollex.pam.domain.Customer;
-import com.pollex.pam.domain.OtpTmp;
-import com.pollex.pam.enums.OtpLoginTypeEnum;
-import com.pollex.pam.enums.OtpTmpStatusEnum;
-import com.pollex.pam.repository.CustomerRepository;
-import com.pollex.pam.service.dto.CustomerRegisterDTO;
-import com.pollex.pam.service.mapper.CustomerDTOMapper;
+import com.pollex.pam.business.domain.Customer;
+import com.pollex.pam.business.domain.OtpTmp;
+import com.pollex.pam.business.enums.OtpLoginTypeEnum;
+import com.pollex.pam.business.enums.OtpTmpStatusEnum;
+import com.pollex.pam.business.repository.CustomerRepository;
+import com.pollex.pam.business.service.dto.CustomerRegisterDTO;
+import com.pollex.pam.business.service.mapper.CustomerDTOMapper;
 
 @Service
 @Transactional
diff --git a/pamapi/src/main/java/com/pollex/pam/service/EmailAlreadyUsedException.java b/pamapi/src/main/java/com/pollex/pam/service/EmailAlreadyUsedException.java
deleted file mode 100644
index 427dc68..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/EmailAlreadyUsedException.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.pollex.pam.service;
-
-public class EmailAlreadyUsedException extends RuntimeException {
-
-    private static final long serialVersionUID = 1L;
-
-    public EmailAlreadyUsedException() {
-        super("Email is already in use!");
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/InterviewRecordService.java b/pamapi/src/main/java/com/pollex/pam/service/InterviewRecordService.java
deleted file mode 100644
index 40197b4..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/InterviewRecordService.java
+++ /dev/null
@@ -1,84 +0,0 @@
-package com.pollex.pam.service;
-
-import java.util.List;
-
-import org.hibernate.boot.model.naming.IllegalIdentifierException;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.InterviewRecord;
-import com.pollex.pam.enums.InterviewRecordStatusEnum;
-import com.pollex.pam.repository.InterviewRecordRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.InterviewRecordDTO;
-import com.pollex.pam.service.mapper.InterviewRecordMapper;
-import com.pollex.pam.web.rest.errors.InterviewRecordNotFoundException;
-
-@Service
-@Transactional
-public class InterviewRecordService {
-	
-	@Autowired
-	InterviewRecordRepository interviewRecordRepository;
-	
-	@Autowired
-	InterviewRecordMapper interviewRecordMapper;
-	
-	@Autowired
-	AppointmentService appointmentService;
-	
-	public InterviewRecord create(InterviewRecordDTO dto) {
-		if(dto.getId()!=null) {
-			throw new IllegalArgumentException();
-		}
-		
-		InterviewRecord record = interviewRecordMapper.toInterviewRecord(dto);
-		checkAuth(record);
-		record.setStatus(InterviewRecordStatusEnum.AVAILABLE);
-		interviewRecordRepository.save(record);
-		return record;
-	}
-	
-	public InterviewRecord update(InterviewRecordDTO dto) {
-		if(dto.getId()==null) {
-			throw new IllegalArgumentException();
-		}
-		
-		InterviewRecord record = findById(dto.getId());
-		checkAuth(record);
-		interviewRecordMapper.copyToInterviewRecord(dto, record);
-		interviewRecordRepository.save(record);
-		return record;
-	}
-	
-	public void checkAuth(InterviewRecord record) {
-		Appointment appointment = appointmentService.findById(record.getAppointmentId());
-		if(!appointment.getAgentNo().equals(SecurityUtils.getAgentNo())) {
-			throw new IllegalAccessError("The account can not edit the appointment");
-		}
-	}
-
-	public void delete(Long interviewRecordId) {
-		InterviewRecord record = findById(interviewRecordId);
-		record.setStatus(InterviewRecordStatusEnum.DELETED);
-		interviewRecordRepository.save(record);
-	}
-	
-	public InterviewRecord findById(Long id) {
-		return interviewRecordRepository.findById(id)
-		.orElseThrow(InterviewRecordNotFoundException::new);
-	}
-
-	public List<InterviewRecordDTO> findByAppointmentId(Long appointmentId) {
-		List<InterviewRecord> records = interviewRecordRepository.findByAppointmentId(appointmentId);
-		return interviewRecordMapper.toInterviewRecordDTO(records);
-	}
-
-	public List<InterviewRecordDTO> findByAppointmentIdAndStatus(Long appointmentId, InterviewRecordStatusEnum status) {
-		List<InterviewRecord> records = interviewRecordRepository.findByAppointmentIdAndStatus(appointmentId, status);
-		return interviewRecordMapper.toInterviewRecordDTO(records);
-	}
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/InvalidPasswordException.java b/pamapi/src/main/java/com/pollex/pam/service/InvalidPasswordException.java
deleted file mode 100644
index 24b28e5..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/InvalidPasswordException.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.pollex.pam.service;
-
-public class InvalidPasswordException extends RuntimeException {
-
-    private static final long serialVersionUID = 1L;
-
-    public InvalidPasswordException() {
-        super("Incorrect password");
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/MailService.java b/pamapi/src/main/java/com/pollex/pam/service/MailService.java
deleted file mode 100644
index 555edd5..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/MailService.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.pollex.pam.service;
-
-import com.pollex.pam.domain.User;
-import java.nio.charset.StandardCharsets;
-import java.util.Locale;
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.context.MessageSource;
-import org.springframework.mail.MailException;
-import org.springframework.mail.javamail.JavaMailSender;
-import org.springframework.mail.javamail.MimeMessageHelper;
-import org.springframework.scheduling.annotation.Async;
-import org.springframework.stereotype.Service;
-import org.thymeleaf.context.Context;
-import org.thymeleaf.spring5.SpringTemplateEngine;
-import tech.jhipster.config.JHipsterProperties;
-
-/**
- * Service for sending emails.
- * <p>
- * We use the {@link Async} annotation to send emails asynchronously.
- */
-@Service
-public class MailService {
-
-    private final Logger log = LoggerFactory.getLogger(MailService.class);
-
-    private static final String USER = "user";
-
-    private static final String BASE_URL = "baseUrl";
-
-    private final JHipsterProperties jHipsterProperties;
-
-    private final JavaMailSender javaMailSender;
-
-    private final MessageSource messageSource;
-
-    private final SpringTemplateEngine templateEngine;
-
-    public MailService(
-        JHipsterProperties jHipsterProperties,
-        JavaMailSender javaMailSender,
-        MessageSource messageSource,
-        SpringTemplateEngine templateEngine
-    ) {
-        this.jHipsterProperties = jHipsterProperties;
-        this.javaMailSender = javaMailSender;
-        this.messageSource = messageSource;
-        this.templateEngine = templateEngine;
-    }
-
-    @Async
-    public void sendEmail(String to, String subject, String content, boolean isMultipart, boolean isHtml) {
-        log.debug(
-            "Send email[multipart '{}' and html '{}'] to '{}' with subject '{}' and content={}",
-            isMultipart,
-            isHtml,
-            to,
-            subject,
-            content
-        );
-
-        // Prepare message using a Spring helper
-        MimeMessage mimeMessage = javaMailSender.createMimeMessage();
-        try {
-            MimeMessageHelper message = new MimeMessageHelper(mimeMessage, isMultipart, StandardCharsets.UTF_8.name());
-            message.setTo(to);
-            message.setFrom(jHipsterProperties.getMail().getFrom());
-            message.setSubject(subject);
-            message.setText(content, isHtml);
-            javaMailSender.send(mimeMessage);
-            log.debug("Sent email to User '{}'", to);
-        } catch (MailException | MessagingException e) {
-            log.warn("Email could not be sent to user '{}'", to, e);
-        }
-    }
-
-    @Async
-    public void sendEmailFromTemplate(User user, String templateName, String titleKey) {
-        if (user.getEmail() == null) {
-            log.debug("Email doesn't exist for user '{}'", user.getLogin());
-            return;
-        }
-        Locale locale = Locale.forLanguageTag(user.getLangKey());
-        Context context = new Context(locale);
-        context.setVariable(USER, user);
-        context.setVariable(BASE_URL, jHipsterProperties.getMail().getBaseUrl());
-        String content = templateEngine.process(templateName, context);
-        String subject = messageSource.getMessage(titleKey, null, locale);
-        sendEmail(user.getEmail(), subject, content, false, true);
-    }
-
-    @Async
-    public void sendActivationEmail(User user) {
-        log.debug("Sending activation email to '{}'", user.getEmail());
-        sendEmailFromTemplate(user, "mail/activationEmail", "email.activation.title");
-    }
-
-    @Async
-    public void sendCreationEmail(User user) {
-        log.debug("Sending creation email to '{}'", user.getEmail());
-        sendEmailFromTemplate(user, "mail/creationEmail", "email.activation.title");
-    }
-
-    @Async
-    public void sendPasswordResetMail(User user) {
-        log.debug("Sending password reset email to '{}'", user.getEmail());
-        sendEmailFromTemplate(user, "mail/passwordResetEmail", "email.reset.title");
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/NoticeService.java b/pamapi/src/main/java/com/pollex/pam/service/NoticeService.java
deleted file mode 100644
index 5d9a908..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/NoticeService.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.pollex.pam.service;
-
-import java.util.List;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.AppointmentNoticeLog;
-import com.pollex.pam.enums.ContactStatusEnum;
-import com.pollex.pam.repository.AppointmentRepository;
-import com.pollex.pam.service.dto.AppointmentNoticeSendDTO;
-
-@Service
-@Transactional
-public class NoticeService {
-	
-	@Autowired
-	AppointmentService appointmentService;
-	
-	@Autowired
-	SendMsgService sendMsgService;
-	
-	@Autowired
-	AppointmentNoticeLogService appointmentNoticeLogService;
-	
-	@Autowired
-	AppointmentRepository appointmentRepository;
-	
-	@Autowired
-    PersonalNotificationService personalNotificationService;
-	
-
-	public void sendNotice(AppointmentNoticeSendDTO dto) {
-		String subject = "靽���像�蝟餌絞�嚗���";
-		
-		if(StringUtils.hasText(dto.getEmail())) {
-			sendMsgService.sendMsgByEmail(dto.getEmail(), subject, dto.getMessage(), true);
-		}if(StringUtils.hasText(dto.getPhone())) {
-			sendMsgService.sendMsgBySMS(dto.getPhone(), dto.getMessage());
-		}
-		
-		List<AppointmentNoticeLog> noticeLogs = 
-				appointmentNoticeLogService.findByAppointmentId(dto.getAppointmentId());
-		if(noticeLogs.size()==0) {
-			Appointment appointment = appointmentService.findById(dto.getAppointmentId());
-			appointment.setCommunicateStatus(ContactStatusEnum.CONTACTED);
-			appointmentRepository.save(appointment);
-		}
-		
-		appointmentNoticeLogService.create(dto);
-		personalNotificationService.createSendNoticeToCustomer(dto.getAppointmentId());
-	}
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/OtpTmpService.java b/pamapi/src/main/java/com/pollex/pam/service/OtpTmpService.java
deleted file mode 100644
index df66731..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/OtpTmpService.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.pollex.pam.service;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.pollex.pam.domain.OtpTmp;
-import com.pollex.pam.enums.OtpLoginTypeEnum;
-import com.pollex.pam.enums.OtpTmpStatusEnum;
-import com.pollex.pam.repository.OtpTmpRepository;
-
-@Service
-@Transactional
-public class OtpTmpService {
-	
-	@Autowired
-	OtpTmpRepository otpTmpRepository;
-	
-	public OtpTmp createOtpTmp(String account, String indexKey) {
-		OtpTmp oldTmp = otpTmpRepository.findByAccount(account);
-		if(oldTmp==null) {
-			OtpTmp otpTmp = new OtpTmp();
-	    	otpTmp.setIndexKey(indexKey);
-	    	otpTmp.setAccount(account);
-	    	otpTmp.setStatus(OtpTmpStatusEnum.UNVERIFIED);
-	    	return otpTmpRepository.save(otpTmp);
-		}else {
-			oldTmp.setIndexKey(indexKey);
-			oldTmp.setStatus(OtpTmpStatusEnum.UNVERIFIED);
-			return otpTmpRepository.save(oldTmp);
-		}
-	}
-
-	public OtpTmp findByAccountAndIndexKey(String account, String indexKey) {
-		return otpTmpRepository.findByAccountAndIndexKey(account, indexKey);
-	}
-
-	public OtpTmp save(OtpTmp otpTmp) {
-		return otpTmpRepository.save(otpTmp);
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/OtpUtilService.java b/pamapi/src/main/java/com/pollex/pam/service/OtpUtilService.java
index 9736d8e..ff21125 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/OtpUtilService.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/OtpUtilService.java
@@ -1,17 +1,17 @@
 package com.pollex.pam.service;
 
-import com.pollex.pam.domain.OtpTmp;
-import com.pollex.pam.enums.OtpTmpStatusEnum;
-import com.pollex.pam.web.rest.errors.OtpLoginFailException;
-import com.pollex.pam.web.rest.vm.VerifyOtpVM;
+import com.pollex.pam.business.domain.OtpTmp;
+import com.pollex.pam.business.enums.OtpTmpStatusEnum;
+import com.pollex.pam.business.service.OtpTmpService;
+import com.pollex.pam.business.web.errors.OtpLoginFailException;
+import com.pollex.pam.business.web.vm.VerifyOtpVM;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.authentication.AuthenticationCredentialsNotFoundException;
 import org.springframework.stereotype.Service;
 
 import com.pollex.pam.config.ApplicationProperties;
-import com.pollex.pam.service.dto.OtpResponseDTO;
+import com.pollex.pam.business.service.dto.OtpResponseDTO;
 import org.springframework.transaction.annotation.Transactional;
 
 @Service
diff --git a/pamapi/src/main/java/com/pollex/pam/service/OtpWebService.java b/pamapi/src/main/java/com/pollex/pam/service/OtpWebService.java
index b61ef34..cdbfb83 100644
--- a/pamapi/src/main/java/com/pollex/pam/service/OtpWebService.java
+++ b/pamapi/src/main/java/com/pollex/pam/service/OtpWebService.java
@@ -1,7 +1,7 @@
 package com.pollex.pam.service;
 
 import com.pollex.pam.config.ApplicationProperties;
-import com.pollex.pam.service.dto.OtpResponseDTO;
+import com.pollex.pam.business.service.dto.OtpResponseDTO;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
diff --git a/pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java b/pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java
deleted file mode 100644
index 3fa7b67..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/PersonalNotificationService.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package com.pollex.pam.service;
-
-import java.time.Instant;
-import java.util.List;
-
-import javax.management.Notification;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.Consultant;
-import com.pollex.pam.domain.Customer;
-import com.pollex.pam.domain.PersonalNotification;
-import com.pollex.pam.domain.Satisfaction;
-import com.pollex.pam.enums.NotificationTypeEnum;
-import com.pollex.pam.enums.PersonalNotificationRoleEnum;
-import com.pollex.pam.repository.CustomerRepository;
-import com.pollex.pam.repository.PersonalNotificationRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.AppointmentUpdateDTO;
-
-@Service
-@Transactional
-public class PersonalNotificationService {
-
-	@Autowired
-	PersonalNotificationRepository personalNotificationRepository;
-
-	@Autowired
-	ConsultantService consultantService;
-
-	@Autowired
-	AppointmentService appointmentService;
-
-	@Autowired
-	CustomerService customerService;
-
-	@Autowired
-	CustomerRepository customerRepository;
-
-	@Autowired
-	SatisfactionService satisfactionService;
-
-	public List<PersonalNotification> getMyPersonalNotification(Long ownerId, PersonalNotificationRoleEnum role) {
-		return personalNotificationRepository.findAllByOwnerRoleAndOwnerId(role, ownerId);
-	}
-
-	public void createSendSatisfactionToClientToCustomer(Appointment appointment) {
-		PersonalNotification entity = new PersonalNotification();
-		Consultant consultant = consultantService.findByAgentNo(appointment.getAgentNo());
-		String content = consultant.getName()+"憿批��憛怠神皛踵�漲閰��";
-		entity.setContent(content);
-		entity.setNotificationType(NotificationTypeEnum.ACTIVITY);
-		entity.setOwnerId(appointment.getCustomerId());
-		entity.setOwnerRole(PersonalNotificationRoleEnum.CUSTOMER);
-		entity.setTitle("憛怠神皛踵�漲");
-		personalNotificationRepository.save(entity);
-	}
-
-	public void createSendNoticeToCustomer(Long appointmentId) {
-		Appointment appointment = appointmentService.findById(appointmentId);
-		PersonalNotification entity = new PersonalNotification();
-		Consultant consultant = consultantService.findByAgentNo(appointment.getAgentNo());
-		String content = "���� "+consultant.getName()+"憿批���赤�";
-		entity.setContent(content);
-		entity.setNotificationType(NotificationTypeEnum.ACTIVITY);
-		entity.setOwnerId(appointment.getCustomerId());
-		entity.setOwnerRole(PersonalNotificationRoleEnum.CUSTOMER);
-		entity.setTitle("憿批��赤�");
-		personalNotificationRepository.save(entity);
-	}
-
-    public void createNotFillAppointmentSatisfactionNumberToCustomer(Long customerId, int notFillSatisfactionSum) {
-        PersonalNotification entity = new PersonalNotification();
-
-        String content = "���� "+notFillSatisfactionSum+" 蝑“���遛��漲��閬‵撖�";
-        entity.setContent(content);
-        entity.setNotificationType(NotificationTypeEnum.ACTIVITY);
-        entity.setOwnerId(customerId);
-        entity.setOwnerRole(PersonalNotificationRoleEnum.CUSTOMER);
-        entity.setTitle("摰X皛踵�漲");
-        personalNotificationRepository.save(entity);
-    }
-
-	public void createEditConsultantToConsultant(Consultant consultant) {
-		PersonalNotification entity = new PersonalNotification();
-		String content = "����犖撣唾�身摰歇�脰��";
-		entity.setContent(content);
-		entity.setNotificationType(NotificationTypeEnum.ACTIVITY);
-		entity.setOwnerId(consultant.getId());
-		entity.setOwnerRole(PersonalNotificationRoleEnum.CONSULTANT);
-		entity.setTitle("霈撣唾����");
-		personalNotificationRepository.save(entity);
-	}
-
-	public void createMarkAppointmentDeletedToConsultant(Appointment appointment) {
-		PersonalNotification entity = new PersonalNotification();
-		Customer customer = customerRepository.findById(appointment.getCustomerId()).get();
-		Consultant consultant = consultantService.findByAgentNo(appointment.getAgentNo());
-		String content = customer.getName()+"摰X撌脣�������";
-		entity.setContent(content);
-		entity.setNotificationType(NotificationTypeEnum.ACTIVITY);
-		entity.setOwnerId(consultant.getId());
-		entity.setOwnerRole(PersonalNotificationRoleEnum.CONSULTANT);
-		entity.setTitle("��������");
-		personalNotificationRepository.save(entity);
-	}
-
-	public void createUpdateAppointmentToConsultant(Appointment appointment) {
-		PersonalNotification entity = new PersonalNotification();
-		Customer customer = customerRepository.findById(appointment.getCustomerId()).get();
-		Consultant consultant = consultantService.findByAgentNo(appointment.getAgentNo());
-		String content = customer.getName()+"摰X撌脫���������";
-		entity.setContent(content);
-		entity.setNotificationType(NotificationTypeEnum.ACTIVITY);
-		entity.setOwnerId(consultant.getId());
-		entity.setOwnerRole(PersonalNotificationRoleEnum.CONSULTANT);
-		entity.setTitle("��������");
-		personalNotificationRepository.save(entity);
-	}
-
-	public void createScorefactionToConsultant(Satisfaction satisfaction) {
-		PersonalNotification entity = new PersonalNotification();
-		Appointment appointment = appointmentService.findById(satisfaction.getAppointmentId());
-		Customer customer = customerRepository.findById(appointment.getCustomerId()).get();
-		Consultant consultant = consultantService.findByAgentNo(appointment.getAgentNo());
-		String content = customer.getName()+"摰X撌脣��脰�遛��漲閰��";
-		entity.setContent(content);
-		entity.setNotificationType(NotificationTypeEnum.ACTIVITY);
-		entity.setOwnerId(consultant.getId());
-		entity.setOwnerRole(PersonalNotificationRoleEnum.CONSULTANT);
-		entity.setTitle("摰X皛踵�漲");
-		personalNotificationRepository.save(entity);
-	}
-
-	public void readAllMyNotification() {
-		if(StringUtils.hasText(SecurityUtils.getAgentNo())) {
-			Long consultantId = consultantService.findByAgentNo(SecurityUtils.getAgentNo()).getId();
-			readAllNotification(PersonalNotificationRoleEnum.CONSULTANT, consultantId);
-		}else if(SecurityUtils.getCustomerDBId()!=null){
-			readAllNotification(PersonalNotificationRoleEnum.CUSTOMER, SecurityUtils.getCustomerDBId());
-		}
-	}
-
-	public void readAllNotification(PersonalNotificationRoleEnum ownerRole
-			, Long ownerId) {
-		List<PersonalNotification> allNotification = personalNotificationRepository.findAllByOwnerRoleAndOwnerId(ownerRole, ownerId);
-		Instant today = Instant.now();
-		allNotification.stream()
-		.filter(notification ->  notification.getReadDate()==null)
-		.forEach(notification ->{
-			notification.setReadDate(today);
-			personalNotificationRepository.saveAll(allNotification);
-		});
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/SatisfactionService.java b/pamapi/src/main/java/com/pollex/pam/service/SatisfactionService.java
deleted file mode 100644
index 1bf3c20..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/SatisfactionService.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package com.pollex.pam.service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-
-import com.pollex.pam.enums.SatisfactionTypeEnum;
-import com.pollex.pam.security.SecurityUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.Satisfaction;
-import com.pollex.pam.enums.SatisfactionStatusEnum;
-import com.pollex.pam.repository.ConsultantRepository;
-import com.pollex.pam.repository.CustomerRepository;
-import com.pollex.pam.repository.SatisfactionRepository;
-import com.pollex.pam.service.dto.SatisfactionCustomerScoreDTO;
-import com.pollex.pam.service.dto.SatisfactionDTO;
-import com.pollex.pam.service.mapper.AppointmentMapper;
-import com.pollex.pam.service.mapper.SatisfactionDTOMapper;
-import com.pollex.pam.service.mapper.SatisfactionMapper;
-import com.pollex.pam.web.rest.errors.SatisfactionAlreadyExistException;
-import com.pollex.pam.web.rest.errors.SatisfactionNotFoundException;
-import org.springframework.util.Assert;
-
-@Service
-@Transactional
-public class SatisfactionService {
-
-    private static final Logger log = LoggerFactory.getLogger(SatisfactionService.class);
-
-	@Autowired
-	SatisfactionRepository satisfactionRepository;
-
-	@Autowired
-	AppointmentMapper appointmentMapper;
-
-	@Autowired
-	SatisfactionDTOMapper satisfactionDTOMapper;
-
-	@Autowired
-	SatisfactionMapper satisfactionMapper;
-
-	@Autowired
-	CustomerRepository customerRepository;
-
-	@Autowired
-	ConsultantRepository consultantRepository;
-
-	@Autowired
-	ConsultantService consultantService;
-
-	@Autowired
-	PersonalNotificationService personalNotificationService;
-
-	public Satisfaction save(Satisfaction satisfaction) {
-		satisfaction = satisfactionRepository.save(satisfaction);
-        if(satisfaction.getType() == SatisfactionTypeEnum.APPOINTMENT) {
-            consultantService.setConsultantAvgScore(satisfaction);
-        }
-		return satisfaction;
-	}
-
-	public Satisfaction scorefaction(SatisfactionCustomerScoreDTO scoreDTO) {
-		Optional<Satisfaction> satisfactionOP = satisfactionRepository.findOneByAppointmentIdAndType(scoreDTO.getAppointmentId(), scoreDTO.getType());
-		Satisfaction satisfaction = satisfactionOP.orElseThrow(SatisfactionNotFoundException::new);
-
-        boolean isSameCustomer = satisfaction.getCustomerId().equals(SecurityUtils.getCustomerDBId());
-        Assert.isTrue(isSameCustomer, "The currently logged in customer has a different ID than the customer on Satisfaction");
-
-		satisfaction.setScore(scoreDTO.getScore());
-		satisfaction.setStatus(SatisfactionStatusEnum.FILLED);
-		save(satisfaction);
-
-        if(satisfaction.getType() == SatisfactionTypeEnum.APPOINTMENT) {
-            personalNotificationService.createScorefactionToConsultant(satisfaction);
-        }
-        return satisfaction;
-	}
-
-	public Satisfaction createAppointmentSatisfaction(Appointment appointment) {
-		boolean isexist = getByAppointmentIdAndType(appointment.getId(), SatisfactionTypeEnum.APPOINTMENT).isPresent();
-		if(isexist) {
-			throw new SatisfactionAlreadyExistException();
-		}
-		Satisfaction satisfaction = appointmentMapper.toAppointmentSatisfaction(appointment);
-		return save(satisfaction);
-	}
-//
-//	public Satisfaction createSatisfaction(SatisfactionCustomerScoreDTO createDTO) {
-//		Satisfaction satisfaction = satisfactionDTOMapper.toSatisfaction(createDTO);
-//		return save(satisfaction);
-//	}
-
-	public List<SatisfactionDTO> getByAgentNoAndType(String agentNo, SatisfactionTypeEnum type) {
-		List<Satisfaction> satisfactionList = satisfactionRepository.findByAgentNoAndType(agentNo, type);
-		return satisfactionMapper.toDTO(satisfactionList);
-	}
-
-	public List<SatisfactionDTO> getByCustomerId(Long customerDBId) {
-		List<Satisfaction> satisfactionList = satisfactionRepository.findByCustomerId(customerDBId);
-		return satisfactionMapper.toDTO(satisfactionList);
-	}
-
-    public Optional<Satisfaction> getByAppointmentIdAndType(Long appointmentId, SatisfactionTypeEnum type) {
-        return satisfactionRepository.findOneByAppointmentIdAndType(appointmentId, type);
-    }
-
-    public List<Satisfaction> getByStatusAndType(SatisfactionStatusEnum status, SatisfactionTypeEnum type) {
-        return satisfactionRepository.findAllByStatusAndType(status, type);
-    }
-
-	public List<Satisfaction> scoreAllfaction(List<SatisfactionCustomerScoreDTO> scoreDTO) {
-		List<Satisfaction> satisfactionList = new ArrayList<>();
-		scoreDTO.stream().forEach(dto ->{
-			satisfactionList.add(scorefaction(dto));
-		});
-		return satisfactionList;
-	}
-
-    public void createUnfilledSystemSatisfaction(Appointment appointment) {
-        Satisfaction satisfaction = new Satisfaction();
-        satisfaction.setAppointmentId(appointment.getId());
-        satisfaction.setCustomerId(SecurityUtils.getCustomerDBId());
-        satisfaction.setStatus(SatisfactionStatusEnum.UNFILLED);
-        satisfaction.setType(SatisfactionTypeEnum.SYSTEM);
-
-        satisfactionRepository.save(satisfaction);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/ScheduleTaskService.java b/pamapi/src/main/java/com/pollex/pam/service/ScheduleTaskService.java
deleted file mode 100644
index be06791..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/ScheduleTaskService.java
+++ /dev/null
@@ -1,169 +0,0 @@
-package com.pollex.pam.service;
-
-import com.pollex.pam.config.ApplicationProperties;
-import com.pollex.pam.config.Constants;
-import com.pollex.pam.domain.*;
-import com.pollex.pam.enums.AppointmentStatusEnum;
-import com.pollex.pam.enums.ContactStatusEnum;
-import com.pollex.pam.enums.SatisfactionStatusEnum;
-import com.pollex.pam.enums.SatisfactionTypeEnum;
-import com.pollex.pam.repository.AppointmentCustomerViewRepository;
-import com.pollex.pam.repository.AppointmentExpiringNotifyRecordRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-import org.springframework.util.StringUtils;
-import org.thymeleaf.context.Context;
-import org.thymeleaf.spring5.SpringTemplateEngine;
-
-import java.time.Instant;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-@Service
-@Transactional
-public class ScheduleTaskService {
-
-    private static final String NOT_CONTACTED_NOTIFY_SUBJECT = "�����脰�蝜恍�";
-    private static final Logger log = LoggerFactory.getLogger(ScheduleTaskService.class);
-
-    @Autowired
-    ConsultantService consultantService;
-
-    @Autowired
-    AppointmentService appointmentService;
-
-    @Autowired
-    AppointmentCustomerViewRepository appointmentCustomerViewRepository;
-
-    @Autowired
-    SendMsgService sendMsgService;
-
-    @Autowired
-    SpringTemplateEngine springTemplateEngine;
-
-    @Autowired
-    ApplicationProperties applicationProperties;
-
-    @Autowired
-    AppointmentExpiringNotifyRecordRepository appointmentExpiringNotifyRecordRepository;
-
-    @Autowired
-    SatisfactionService satisfactionService;
-
-    @Autowired
-    PersonalNotificationService personalNotificationService;
-
-    @Scheduled(cron = "0 30 8 * * *")
-    public void sendAppointmentPendingNotifyToConsultant() {
-        log.info("Starting send appointment pending notify to consultant");
-
-        Map<String, List<AppointmentCustomerView>> consultantWithPendingAppointments =
-            appointmentCustomerViewRepository.findAllByCommunicateStatusAndStatus(ContactStatusEnum.RESERVED, AppointmentStatusEnum.AVAILABLE)
-                .stream()
-                .filter(appointment ->
-                    appointmentService.isAppointmentDateNotInIntervalFromNow(appointment, Constants.APPOINTMENT_PENDING_PHONE_INTERVAL, Constants.APPOINTMENT_PENDING_EMAIL_INTERVAL)
-                )
-                .collect(Collectors.groupingBy(AppointmentCustomerView::getAgentNo));
-
-        consultantWithPendingAppointments.forEach((agentNo, pendingAppointments) -> {
-            int pendingAppointmentsSum = pendingAppointments.size();
-            Consultant consultant = consultantService.findByAgentNo(agentNo);
-            Optional<String> optionalPhone = Optional.ofNullable(consultant.getPhoneNumber()).filter(StringUtils::hasText);
-            Optional<String> optionalEmail = Optional.ofNullable(consultant.getEmail()).filter(StringUtils::hasText);
-
-            String emailContent = getAppointmentPendingNotifyEmailContent(pendingAppointmentsSum, getAppointmentPendingNotifyUrl());
-
-            optionalPhone.ifPresent(phone -> {
-                sendMsgService.sendMsgBySMS(phone, String.format("����%s������脰�蝜恬��������雯��嚗�%s"
-                    , pendingAppointmentsSum, getAppointmentPendingNotifyUrl()));
-            });
-            optionalEmail.ifPresent(email -> {
-                sendMsgService.sendMsgByEmail(email, NOT_CONTACTED_NOTIFY_SUBJECT, emailContent, true);
-            });
-        });
-
-        log.info("Sending appointment pending notify to consultant finish");
-    }
-
-    @Scheduled(cron = "0 30 8 * * *")
-    public void sendAppointmentExpiringNotifyToCustomer() {
-        log.info("Starting send appointment expiring notify to customer");
-
-        List<AppointmentCustomerView> allByCommunicateStatus =
-            appointmentCustomerViewRepository.findAllByCommunicateStatusAndStatus(ContactStatusEnum.RESERVED, AppointmentStatusEnum.AVAILABLE)
-                .stream()
-                .filter(appointment ->
-                    appointmentService.isAppointmentDateNotInIntervalFromNow(appointment, Constants.APPOINTMENT_EXPIRING_PHONE_INTERVAL, Constants.APPOINTMENT_EXPIRING_EMAIL_INTERVAL)
-                )
-                .filter(this::isAppointmentExpiringNotifyNotOnLimit)
-                .collect(Collectors.toList());
-
-        allByCommunicateStatus.forEach(appointment -> {
-            Consultant consultant = consultantService.findByAgentNo(appointment.getAgentNo());
-            Optional<String> optionalPhone = Optional.ofNullable(appointment.getPhone()).filter(StringUtils::hasText);
-            Optional<String> optionalEmail = Optional.ofNullable(appointment.getEmail()).filter(StringUtils::hasText);
-
-            optionalPhone.ifPresent(phone ->
-                sendMsgService.sendMsgBySMS(phone, String.format("敺甇�����%s憿批�迤敹�葉嚗������蒂���隞“������雯��嚗�%s"
-                    , consultant.getName(), getAppointmentExpiringNotifyUrl(appointment.getId())))
-            );
-            optionalEmail.ifPresent(email ->
-                sendMsgService.sendMsgByEmail(email, NOT_CONTACTED_NOTIFY_SUBJECT, getAppointmentExpiringNotifyEmail(consultant.getName(), getAppointmentExpiringNotifyUrl(appointment.getId())), true)
-            );
-
-            AppointmentExpiringNotifyRecord record = new AppointmentExpiringNotifyRecord();
-            record.setAppointmentId(appointment.getId());
-            record.setSendTime(Instant.now());
-
-            appointmentExpiringNotifyRecordRepository.save(record);
-        });
-
-        log.info("Sending appointment expiring notify to customer finish");
-    }
-
-    @Scheduled(cron = "0 30 8 * * *")
-    public void sendNotFillAppointmentSatisfactionToPersonalNotification() {
-        Map<Long, List<Satisfaction>> customerNotFillSatisfactions =
-            satisfactionService.getByStatusAndType(SatisfactionStatusEnum.UNFILLED, SatisfactionTypeEnum.APPOINTMENT)
-                .stream()
-                .collect(Collectors.groupingBy(Satisfaction::getCustomerId));
-
-        customerNotFillSatisfactions.forEach((customerId, notFillSatisfactions) ->
-            personalNotificationService.createNotFillAppointmentSatisfactionNumberToCustomer(customerId, notFillSatisfactions.size())
-        );
-    }
-    private boolean isAppointmentExpiringNotifyNotOnLimit(AppointmentCustomerView appointment) {
-        int sendNotifyToCustomerRecordSum =
-            appointmentExpiringNotifyRecordRepository.findAllByAppointmentId(appointment.getId()).size();
-
-        return sendNotifyToCustomerRecordSum < Constants.SEND_EXPIRING_NOTIFY_LIMIT;
-    }
-
-    private String getAppointmentPendingNotifyUrl() {
-        return applicationProperties.getFrontEndDomain() + "/consultantLogin";
-    }
-
-    private String getAppointmentExpiringNotifyUrl(Long appointmentId) {
-        return applicationProperties.getFrontEndDomain() + "?notContactAppointmentId=" + appointmentId;
-    }
-
-    private String getAppointmentPendingNotifyEmailContent(int sum, String notifyUrl) {
-        Context context = new Context();
-        context.setVariable("pendingAppointmentSum", sum);
-        context.setVariable("notifyUrl", notifyUrl);
-        return springTemplateEngine.process("mail/appointmentPendingNotifyEmail", context);
-    }
-
-    private String getAppointmentExpiringNotifyEmail(String consultantName, String notifyUrl) {
-        Context context = new Context();
-        context.setVariable("consultantName", consultantName);
-        context.setVariable("notifyUrl", notifyUrl);
-        return springTemplateEngine.process("mail/appointmentExpiringNotifyEmail", context);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/SendMsgService.java b/pamapi/src/main/java/com/pollex/pam/service/SendMsgService.java
deleted file mode 100644
index a5be71e..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/SendMsgService.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package com.pollex.pam.service;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.pollex.pam.config.ApplicationProperties;
-import com.pollex.pam.config.ApplicationProperties.Email;
-import com.pollex.pam.config.ApplicationProperties.SMS;
-import com.pollex.pam.config.Constants;
-import com.pollex.pam.enums.SendEmailMsgMethod;
-import com.pollex.pam.repository.ConsultantRepository;
-import com.pollex.pam.service.dto.*;
-import com.pollex.pam.service.util.HttpRequestUtil;
-import com.pollex.pam.web.rest.errors.SendEmailFailException;
-import com.pollex.pam.web.rest.errors.SendSMSFailException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.env.Environment;
-import org.springframework.core.env.Profiles;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-import org.thymeleaf.spring5.SpringTemplateEngine;
-import tech.jhipster.config.JHipsterConstants;
-
-import java.nio.charset.StandardCharsets;
-import java.time.LocalDateTime;
-import java.time.format.DateTimeFormatter;
-import java.util.*;
-import java.util.Base64.Encoder;
-
-@Service
-public class SendMsgService {
-
-    private static final Logger log = LoggerFactory.getLogger(SendMsgService.class);
-    private final Encoder encoder = Base64.getEncoder();
-
-    private static final String SEND_SMS_SUCCESS_CODE = "1";
-
-    @Autowired
-    ApplicationProperties applicationProperties;
-
-    @Autowired
-    ConsultantRepository consultantRepository;
-
-    @Autowired
-    SpringTemplateEngine springTemplateEngine;
-
-    @Autowired
-    Environment environment;
-
-    @Autowired
-    MailService mailService;
-
-    public SendSMSResponse sendMsgBySMS(String toMobile, String content) throws SendSMSFailException {
-
-        SMS smsProperties = applicationProperties.getSms();
-        if(!smsProperties.isSendNotifyMsg()) {
-//    		return getMockSMSResponse();
-            return null;
-        }
-
-        SendSMSRequest sendSMSRequest = new SendSMSRequest();
-        sendSMSRequest.setpKey(UUID.randomUUID().toString());
-        sendSMSRequest.setSourceCode(smsProperties.getSourceCode());
-        sendSMSRequest.setSender(smsProperties.getSender());
-        sendSMSRequest.setMsgTypeSet(smsProperties.getSmsType());
-        sendSMSRequest.setSendTime(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:00")));
-        sendSMSRequest.setSubject(encoder.encodeToString(smsProperties.getSubject().getBytes(StandardCharsets.UTF_8)));
-        sendSMSRequest.setActivityId("");
-
-        SMSDetail smsDetail = new SMSDetail();
-        smsDetail.setMobile(toMobile);
-        smsDetail.setContent(encoder.encodeToString(content.getBytes(StandardCharsets.UTF_8)));
-
-        sendSMSRequest.setDetail(Collections.singletonList(smsDetail));
-
-        try {
-            ResponseEntity<SendSMSResponse> responseEntity = HttpRequestUtil.postWithJson(smsProperties.getUrl(), sendSMSRequest, SendSMSResponse.class);
-            SendSMSResponse response = responseEntity.getBody();
-
-            log.debug("response status code = {}", responseEntity.getStatusCode());
-            log.debug("smsResponse = {}", responseEntity.getBody());
-
-            if(!SEND_SMS_SUCCESS_CODE.equals(response.getReturnCode())) {
-                throw new SendSMSFailException("sms service return code = " + response.getReturnCode() + ", error_msg = " + response.getErrorMsg());
-            }
-
-            return responseEntity.getBody();
-        } catch (SendSMSFailException e) {
-            throw e;
-        } catch (Exception e) {
-            log.warn("send sms fail by other reason!", e);
-            throw new SendSMSFailException("send sms fail by other reason!");
-        }
-    }
-
-//    private SendSMSResponse getMockSMSResponse() {
-//    	SendSMSResponse mock = new SendSMSResponse();
-//    	mock.set
-//		return null;
-//	}
-
-	public String sendMsgByEmail(String to, String subject, String content, boolean htmlFormat) throws SendEmailFailException{
-        return sendMsgByEmail(to, subject, content, htmlFormat, Collections.emptyList(), Collections.emptyList());
-    }
-
-    public String sendMsgByEmail(String toAddress, String subject, String content, boolean htmlFormat, List<String> toCCAddress,
-        List<String> attachments) throws SendEmailFailException {
-    	String fromAddress = applicationProperties.getEmail().getSenderEmail();
-
-        SendMailRequest sendMailRequest = new SendMailRequest();
-        sendMailRequest.setSendMailAddresses(Collections.singletonList(toAddress));
-        sendMailRequest.setFrom(fromAddress);
-        sendMailRequest.setContent(content);
-        sendMailRequest.setSubject(subject);
-        sendMailRequest.setSendCCMailAddresses(toCCAddress);
-        sendMailRequest.setAttachments(attachments);
-        sendMailRequest.setHtmlFormat(htmlFormat);
-        sendMailRequest.setFunctionId(applicationProperties.getEmail().getFunctionId());
-
-        return sendMsgByEmail(sendMailRequest);
-    }
-
-    public String sendMsgByEmail(SendMailRequest sendMailRequest) throws SendEmailFailException{
-        final Email emailProperties = applicationProperties.getEmail();
-
-        if(!emailProperties.isSendNotifyMsg()) {
-            return null;
-        }
-
-        if(emailProperties.getMethod() == SendEmailMsgMethod.POLLEX_GMAIL) {
-            return sendMsgByPollexGmail(sendMailRequest);
-        }
-        else if(emailProperties.getMethod() == SendEmailMsgMethod.PAM_EMAIL_SERVICE) {
-            return sendMsgByPamEmailService(sendMailRequest);
-        }
-
-        return null;
-    }
-
-    private String sendMsgByPollexGmail(SendMailRequest sendMailRequest) {
-        String subject = sendMailRequest.getSubject();
-        String content = sendMailRequest.getContent();
-        boolean isHtml = sendMailRequest.isHtmlFormat();
-        sendMailRequest.getSendMailAddresses().forEach(receiver -> mailService.sendEmail(receiver, subject, content, false, isHtml));
-
-        return null;
-    }
-
-    private String sendMsgByPamEmailService(SendMailRequest sendMailRequest) {
-        final Email emailProperties = applicationProperties.getEmail();
-        try {
-            ResponseEntity<String> responseEntity =
-                HttpRequestUtil.postWithJson(emailProperties.getUrl(), sendMailRequest, String.class);
-            log.debug("responseEntity = {}", responseEntity);
-
-            String rawResponseString = responseEntity.getBody();
-            SendMailResponse sendMailResponse = new ObjectMapper().readValue(rawResponseString, SendMailResponse.class);
-            log.debug("sendMailResponse = {}", sendMailResponse);
-
-            if (sendMailResponse == null || sendMailResponse.getData() == null || !"ADDED".equalsIgnoreCase(sendMailResponse.getData().getMessageStatus())) {
-                throw new SendEmailFailException("send email service return error msg! raw response string= " + rawResponseString);
-            }
-
-            return responseEntity.getBody();
-        } catch (SendEmailFailException e) {
-            throw e;
-        } catch (Exception e) {
-            log.warn("send email fail by other reason", e);
-            throw new SendEmailFailException("send email failed!");
-        }
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/UserService.java b/pamapi/src/main/java/com/pollex/pam/service/UserService.java
deleted file mode 100644
index 3bfa0ad..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/UserService.java
+++ /dev/null
@@ -1,333 +0,0 @@
-package com.pollex.pam.service;
-
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-import java.util.List;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.cache.CacheManager;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.security.crypto.password.PasswordEncoder;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.pollex.pam.config.Constants;
-import com.pollex.pam.domain.Authority;
-import com.pollex.pam.domain.User;
-import com.pollex.pam.repository.AuthorityRepository;
-import com.pollex.pam.repository.UserRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.dto.AdminUserDTO;
-import com.pollex.pam.service.dto.UserDTO;
-
-import tech.jhipster.security.RandomUtil;
-
-/**
- * Service class for managing users.
- */
-@Service
-@Transactional
-public class UserService {
-
-    private final Logger log = LoggerFactory.getLogger(UserService.class);
-
-    private final UserRepository userRepository;
-
-    private final PasswordEncoder passwordEncoder;
-
-    private final AuthorityRepository authorityRepository;
-
-    private final CacheManager cacheManager;
-    
-
-    public UserService(
-        UserRepository userRepository,
-        PasswordEncoder passwordEncoder,
-        AuthorityRepository authorityRepository,
-        CacheManager cacheManager
-    ) {
-        this.userRepository = userRepository;
-        this.passwordEncoder = passwordEncoder;
-        this.authorityRepository = authorityRepository;
-        this.cacheManager = cacheManager;
-    }
-
-    public Optional<User> activateRegistration(String key) {
-        log.debug("Activating user for activation key {}", key);
-        return userRepository
-            .findOneByActivationKey(key)
-            .map(user -> {
-                // activate given user for the registration key.
-                user.setActivated(true);
-                user.setActivationKey(null);
-                this.clearUserCaches(user);
-                log.debug("Activated user: {}", user);
-                return user;
-            });
-    }
-
-    public Optional<User> completePasswordReset(String newPassword, String key) {
-        log.debug("Reset user password for reset key {}", key);
-        return userRepository
-            .findOneByResetKey(key)
-            .filter(user -> user.getResetDate().isAfter(Instant.now().minus(1, ChronoUnit.DAYS)))
-            .map(user -> {
-                user.setPassword(passwordEncoder.encode(newPassword));
-                user.setResetKey(null);
-                user.setResetDate(null);
-                this.clearUserCaches(user);
-                return user;
-            });
-    }
-
-    public Optional<User> requestPasswordReset(String mail) {
-        return userRepository
-            .findOneByEmailIgnoreCase(mail)
-            .filter(User::isActivated)
-            .map(user -> {
-                user.setResetKey(RandomUtil.generateResetKey());
-                user.setResetDate(Instant.now());
-                this.clearUserCaches(user);
-                return user;
-            });
-    }
-
-//    public User registerUser(AdminUserDTO userDTO, String password) {
-//        userRepository
-//            .findOneByLogin(userDTO.getLogin().toLowerCase())
-//            .ifPresent(existingUser -> {
-//                boolean removed = removeNonActivatedUser(existingUser);
-//                if (!removed) {
-//                    throw new UsernameAlreadyUsedException();
-//                }
-//            });
-//        userRepository
-//            .findOneByEmailIgnoreCase(userDTO.getEmail())
-//            .ifPresent(existingUser -> {
-//                boolean removed = removeNonActivatedUser(existingUser);
-//                if (!removed) {
-//                    throw new EmailAlreadyUsedException();
-//                }
-//            });
-//        User newUser = new User();
-//        String encryptedPassword = passwordEncoder.encode(password);
-//        newUser.setLogin(userDTO.getLogin().toLowerCase());
-//        // new user gets initially a generated password
-//        newUser.setPassword(encryptedPassword);
-//        newUser.setFirstName(userDTO.getFirstName());
-//        newUser.setLastName(userDTO.getLastName());
-//        if (userDTO.getEmail() != null) {
-//            newUser.setEmail(userDTO.getEmail().toLowerCase());
-//        }
-//        newUser.setImageUrl(userDTO.getImageUrl());
-//        newUser.setLangKey(userDTO.getLangKey());
-//        // new user is not active
-//        newUser.setActivated(false);
-//        // new user gets registration key
-//        newUser.setActivationKey(RandomUtil.generateActivationKey());
-//        Set<Authority> authorities = new HashSet<>();
-//        authorityRepository.findById(AuthoritiesConstants.USER).ifPresent(authorities::add);
-//        newUser.setAuthorities(authorities);
-//        userRepository.save(newUser);
-//        this.clearUserCaches(newUser);
-//        log.debug("Created Information for User: {}", newUser);
-//        return newUser;
-//    }
-
-    private boolean removeNonActivatedUser(User existingUser) {
-        if (existingUser.isActivated()) {
-            return false;
-        }
-        userRepository.delete(existingUser);
-        userRepository.flush();
-        this.clearUserCaches(existingUser);
-        return true;
-    }
-
-    public User createUser(AdminUserDTO userDTO) {
-        User user = new User();
-        user.setLogin(userDTO.getLogin().toLowerCase());
-        user.setFirstName(userDTO.getFirstName());
-        user.setLastName(userDTO.getLastName());
-        if (userDTO.getEmail() != null) {
-            user.setEmail(userDTO.getEmail().toLowerCase());
-        }
-        user.setImageUrl(userDTO.getImageUrl());
-        if (userDTO.getLangKey() == null) {
-            user.setLangKey(Constants.DEFAULT_LANGUAGE); // default language
-        } else {
-            user.setLangKey(userDTO.getLangKey());
-        }
-        String encryptedPassword = passwordEncoder.encode(RandomUtil.generatePassword());
-        user.setPassword(encryptedPassword);
-        user.setResetKey(RandomUtil.generateResetKey());
-        user.setResetDate(Instant.now());
-        user.setActivated(true);
-        if (userDTO.getAuthorities() != null) {
-            Set<Authority> authorities = userDTO
-                .getAuthorities()
-                .stream()
-                .map(authorityRepository::findById)
-                .filter(Optional::isPresent)
-                .map(Optional::get)
-                .collect(Collectors.toSet());
-            user.setAuthorities(authorities);
-        }
-        userRepository.save(user);
-        this.clearUserCaches(user);
-        log.debug("Created Information for User: {}", user);
-        return user;
-    }
-
-    /**
-     * Update all information for a specific user, and return the modified user.
-     *
-     * @param userDTO user to update.
-     * @return updated user.
-     */
-    public Optional<AdminUserDTO> updateUser(AdminUserDTO userDTO) {
-        return Optional
-            .of(userRepository.findById(userDTO.getId()))
-            .filter(Optional::isPresent)
-            .map(Optional::get)
-            .map(user -> {
-                this.clearUserCaches(user);
-                user.setLogin(userDTO.getLogin().toLowerCase());
-                user.setFirstName(userDTO.getFirstName());
-                user.setLastName(userDTO.getLastName());
-                if (userDTO.getEmail() != null) {
-                    user.setEmail(userDTO.getEmail().toLowerCase());
-                }
-                user.setImageUrl(userDTO.getImageUrl());
-                user.setActivated(userDTO.isActivated());
-                user.setLangKey(userDTO.getLangKey());
-                Set<Authority> managedAuthorities = user.getAuthorities();
-                managedAuthorities.clear();
-                userDTO
-                    .getAuthorities()
-                    .stream()
-                    .map(authorityRepository::findById)
-                    .filter(Optional::isPresent)
-                    .map(Optional::get)
-                    .forEach(managedAuthorities::add);
-                this.clearUserCaches(user);
-                log.debug("Changed Information for User: {}", user);
-                return user;
-            })
-            .map(AdminUserDTO::new);
-    }
-
-    public void deleteUser(String login) {
-        userRepository
-            .findOneByLogin(login)
-            .ifPresent(user -> {
-                userRepository.delete(user);
-                this.clearUserCaches(user);
-                log.debug("Deleted User: {}", user);
-            });
-    }
-
-    /**
-     * Update basic information (first name, last name, email, language) for the current user.
-     *
-     * @param firstName first name of user.
-     * @param lastName  last name of user.
-     * @param email     email id of user.
-     * @param langKey   language key.
-     * @param imageUrl  image URL of user.
-     */
-    public void updateUser(String firstName, String lastName, String email, String langKey, String imageUrl) {
-        SecurityUtils
-            .getCurrentUserLogin()
-            .flatMap(userRepository::findOneByLogin)
-            .ifPresent(user -> {
-                user.setFirstName(firstName);
-                user.setLastName(lastName);
-                if (email != null) {
-                    user.setEmail(email.toLowerCase());
-                }
-                user.setLangKey(langKey);
-                user.setImageUrl(imageUrl);
-                this.clearUserCaches(user);
-                log.debug("Changed Information for User: {}", user);
-            });
-    }
-
-    @Transactional
-    public void changePassword(String currentClearTextPassword, String newPassword) {
-        SecurityUtils
-            .getCurrentUserLogin()
-            .flatMap(userRepository::findOneByLogin)
-            .ifPresent(user -> {
-                String currentEncryptedPassword = user.getPassword();
-                if (!passwordEncoder.matches(currentClearTextPassword, currentEncryptedPassword)) {
-                    throw new InvalidPasswordException();
-                }
-                String encryptedPassword = passwordEncoder.encode(newPassword);
-                user.setPassword(encryptedPassword);
-                this.clearUserCaches(user);
-                log.debug("Changed password for User: {}", user);
-            });
-    }
-
-    @Transactional(readOnly = true)
-    public Page<AdminUserDTO> getAllManagedUsers(Pageable pageable) {
-        return userRepository.findAll(pageable).map(AdminUserDTO::new);
-    }
-
-    @Transactional(readOnly = true)
-    public Page<UserDTO> getAllPublicUsers(Pageable pageable) {
-        return userRepository.findAllByIdNotNullAndActivatedIsTrue(pageable).map(UserDTO::new);
-    }
-
-    @Transactional(readOnly = true)
-    public Optional<User> getUserWithAuthoritiesByLogin(String login) {
-        return userRepository.findOneWithAuthoritiesByLogin(login);
-    }
-
-    @Transactional(readOnly = true)
-    public Optional<User> getUserWithAuthorities() {
-        return SecurityUtils.getCurrentUserLogin().flatMap(userRepository::findOneWithAuthoritiesByLogin);
-    }
-
-    /**
-     * Not activated users should be automatically deleted after 3 days.
-     * <p>
-     * This is scheduled to get fired everyday, at 01:00 (am).
-     */
-    @Scheduled(cron = "0 0 1 * * ?")
-    public void removeNotActivatedUsers() {
-        userRepository
-            .findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(Instant.now().minus(3, ChronoUnit.DAYS))
-            .forEach(user -> {
-                log.debug("Deleting not activated user {}", user.getLogin());
-                userRepository.delete(user);
-                this.clearUserCaches(user);
-            });
-    }
-
-    /**
-     * Gets a list of all the authorities.
-     * @return a list of all the authorities.
-     */
-    @Transactional(readOnly = true)
-    public List<String> getAuthorities() {
-        return authorityRepository.findAll().stream().map(Authority::getName).collect(Collectors.toList());
-    }
-
-    private void clearUserCaches(User user) {
-        Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_LOGIN_CACHE)).evict(user.getLogin());
-        if (user.getEmail() != null) {
-            Objects.requireNonNull(cacheManager.getCache(UserRepository.USERS_BY_EMAIL_CACHE)).evict(user.getEmail());
-        }
-    }
-    
-    
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/UsernameAlreadyUsedException.java b/pamapi/src/main/java/com/pollex/pam/service/UsernameAlreadyUsedException.java
deleted file mode 100644
index 3d011f8..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/UsernameAlreadyUsedException.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.pollex.pam.service;
-
-public class UsernameAlreadyUsedException extends RuntimeException {
-
-    private static final long serialVersionUID = 1L;
-
-    public UsernameAlreadyUsedException() {
-        super("Login name already used!");
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java
deleted file mode 100644
index 13b270d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AbstractAppointmentProcessDTO.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.pollex.pam.enums.ContactStatusEnum;
-
-public abstract class AbstractAppointmentProcessDTO{
-	
-	private ContactStatusEnum contactStatus;
-	private Long appointmentId;
-//	private Long closedInfoId;
-
-	public ContactStatusEnum getContactStatus() {
-		return contactStatus;
-	}
-
-	public void setContactStatus(ContactStatusEnum contactStatus) {
-		this.contactStatus = contactStatus;
-	}
-
-	public Long getAppointmentId() {
-		return appointmentId;
-	}
-
-	public void setAppointmentId(Long appointmentId) {
-		this.appointmentId = appointmentId;
-	}
-
-//	public Long getClosedInfoId() {
-//		return closedInfoId;
-//	}
-//
-//	public void setClosedInfoId(Long closedInfoId) {
-//		this.closedInfoId = closedInfoId;
-//	}
-
-	
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AddConsultantData.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AddConsultantData.java
deleted file mode 100644
index 5bf8e35..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AddConsultantData.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.time.Instant;
-
-public class AddConsultantData {
-    private String agentNo;
-    private Instant createdTime;
-
-    public String getAgentNo() {
-        return agentNo;
-    }
-
-    public void setAgentNo(String agentNo) {
-        this.agentNo = agentNo;
-    }
-
-    public Instant getCreatedTime() {
-        return createdTime;
-    }
-
-    public void setCreatedTime(Instant createdTime) {
-        this.createdTime = createdTime;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AddConsultantParam.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AddConsultantParam.java
deleted file mode 100644
index 7e6e2af..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AddConsultantParam.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.util.List;
-
-public class AddConsultantParam {
-    List<AddConsultantData> consultantList;
-
-    public List<AddConsultantData> getConsultantList() {
-        return consultantList;
-    }
-
-    public void setConsultantList(List<AddConsultantData> consultantList) {
-        this.consultantList = consultantList;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AdminUserDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AdminUserDTO.java
deleted file mode 100644
index bcdafec..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AdminUserDTO.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.pollex.pam.config.Constants;
-import com.pollex.pam.domain.Authority;
-import com.pollex.pam.domain.User;
-import java.time.Instant;
-import java.util.Set;
-import java.util.stream.Collectors;
-import javax.validation.constraints.*;
-
-/**
- * A DTO representing a user, with his authorities.
- */
-public class AdminUserDTO {
-
-    private Long id;
-
-    @NotBlank
-    @Pattern(regexp = Constants.LOGIN_REGEX)
-    @Size(min = 1, max = 50)
-    private String login;
-
-    @Size(max = 50)
-    private String firstName;
-
-    @Size(max = 50)
-    private String lastName;
-
-    @Email
-    @Size(min = 5, max = 254)
-    private String email;
-
-    @Size(max = 256)
-    private String imageUrl;
-
-    private boolean activated = false;
-
-    @Size(min = 2, max = 10)
-    private String langKey;
-
-    private String createdBy;
-
-    private Instant createdDate;
-
-    private String lastModifiedBy;
-
-    private Instant lastModifiedDate;
-
-    private Set<String> authorities;
-
-    public AdminUserDTO() {
-        // Empty constructor needed for Jackson.
-    }
-
-    public AdminUserDTO(User user) {
-        this.id = user.getId();
-        this.login = user.getLogin();
-        this.firstName = user.getFirstName();
-        this.lastName = user.getLastName();
-        this.email = user.getEmail();
-        this.activated = user.isActivated();
-        this.imageUrl = user.getImageUrl();
-        this.langKey = user.getLangKey();
-        this.createdBy = user.getCreatedBy();
-        this.createdDate = user.getCreatedDate();
-        this.lastModifiedBy = user.getLastModifiedBy();
-        this.lastModifiedDate = user.getLastModifiedDate();
-        this.authorities = user.getAuthorities().stream().map(Authority::getName).collect(Collectors.toSet());
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getLogin() {
-        return login;
-    }
-
-    public void setLogin(String login) {
-        this.login = login;
-    }
-
-    public String getFirstName() {
-        return firstName;
-    }
-
-    public void setFirstName(String firstName) {
-        this.firstName = firstName;
-    }
-
-    public String getLastName() {
-        return lastName;
-    }
-
-    public void setLastName(String lastName) {
-        this.lastName = lastName;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public String getImageUrl() {
-        return imageUrl;
-    }
-
-    public void setImageUrl(String imageUrl) {
-        this.imageUrl = imageUrl;
-    }
-
-    public boolean isActivated() {
-        return activated;
-    }
-
-    public void setActivated(boolean activated) {
-        this.activated = activated;
-    }
-
-    public String getLangKey() {
-        return langKey;
-    }
-
-    public void setLangKey(String langKey) {
-        this.langKey = langKey;
-    }
-
-    public String getCreatedBy() {
-        return createdBy;
-    }
-
-    public void setCreatedBy(String createdBy) {
-        this.createdBy = createdBy;
-    }
-
-    public Instant getCreatedDate() {
-        return createdDate;
-    }
-
-    public void setCreatedDate(Instant createdDate) {
-        this.createdDate = createdDate;
-    }
-
-    public String getLastModifiedBy() {
-        return lastModifiedBy;
-    }
-
-    public void setLastModifiedBy(String lastModifiedBy) {
-        this.lastModifiedBy = lastModifiedBy;
-    }
-
-    public Instant getLastModifiedDate() {
-        return lastModifiedDate;
-    }
-
-    public void setLastModifiedDate(Instant lastModifiedDate) {
-        this.lastModifiedDate = lastModifiedDate;
-    }
-
-    public Set<String> getAuthorities() {
-        return authorities;
-    }
-
-    public void setAuthorities(Set<String> authorities) {
-        this.authorities = authorities;
-    }
-
-    // prettier-ignore
-    @Override
-    public String toString() {
-        return "AdminUserDTO{" +
-            "login='" + login + '\'' +
-            ", firstName='" + firstName + '\'' +
-            ", lastName='" + lastName + '\'' +
-            ", email='" + email + '\'' +
-            ", imageUrl='" + imageUrl + '\'' +
-            ", activated=" + activated +
-            ", langKey='" + langKey + '\'' +
-            ", createdBy=" + createdBy +
-            ", createdDate=" + createdDate +
-            ", lastModifiedBy='" + lastModifiedBy + '\'' +
-            ", lastModifiedDate=" + lastModifiedDate +
-            ", authorities=" + authorities +
-            "}";
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java
deleted file mode 100644
index bc9a8e2..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCloseDTO.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.util.Date;
-
-import com.pollex.pam.enums.ContactStatusEnum;
-
-public class AppointmentCloseDTO{
-	
-//	private Long closedInfoId;
-	private String policyholderIdentityId;
-	private String planCode;
-	private Date policyEntryDate;
-	private String remark;
-	private String closedReason;
-	private String closedOtherReason;
-	private ContactStatusEnum contactStatus;
-	private Long appointmentId;
-	
-	public String getPolicyholderIdentityId() {
-		return policyholderIdentityId;
-	}
-	public void setPolicyholderIdentityId(String policyholderIdentityId) {
-		this.policyholderIdentityId = policyholderIdentityId;
-	}
-	public String getPlanCode() {
-		return planCode;
-	}
-	public void setPlanCode(String planCode) {
-		this.planCode = planCode;
-	}
-	public Date getPolicyEntryDate() {
-		return policyEntryDate;
-	}
-	public void setPolicyEntryDate(Date policyEntryDate) {
-		this.policyEntryDate = policyEntryDate;
-	}
-	public String getRemark() {
-		return remark;
-	}
-	public void setRemark(String remark) {
-		this.remark = remark;
-	}
-	public String getClosedReason() {
-		return closedReason;
-	}
-	public void setClosedReason(String closedReason) {
-		this.closedReason = closedReason;
-	}
-	public String getClosedOtherReason() {
-		return closedOtherReason;
-	}
-	public void setClosedOtherReason(String closedOtherReason) {
-		this.closedOtherReason = closedOtherReason;
-	}
-	public ContactStatusEnum getContactStatus() {
-		return contactStatus;
-	}
-	public void setContactStatus(ContactStatusEnum contactStatus) {
-		this.contactStatus = contactStatus;
-	}
-	public Long getAppointmentId() {
-		return appointmentId;
-	}
-	public void setAppointmentId(Long appointmentId) {
-		this.appointmentId = appointmentId;
-	}
-//	public Long getClosedInfoId() {
-//		return closedInfoId;
-//	}
-//	public void setClosedInfoId(Long closedInfoId) {
-//		this.closedInfoId = closedInfoId;
-//	}
-	
-	
-	
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCreateDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCreateDTO.java
deleted file mode 100644
index 3c566ab..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCreateDTO.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.pollex.pam.service.dto;
-
-public class AppointmentCreateDTO {
-	
-    private String phone;
-    private String email;
-    private String contactType; //�蝯⊥撘�
-    private String gender;
-    private String age;
-    private String job;
-    private String requirement;
-    private String hopeContactTime; //撣�蝯∠����
-    private String otherRequirement;
-    private String agentNo;
-    
-	public String getPhone() {
-		return phone;
-	}
-	public void setPhone(String phone) {
-		this.phone = phone;
-	}
-	public String getEmail() {
-		return email;
-	}
-	public void setEmail(String email) {
-		this.email = email;
-	}
-	public String getContactType() {
-		return contactType;
-	}
-	public void setContactType(String contactType) {
-		this.contactType = contactType;
-	}
-	public String getGender() {
-		return gender;
-	}
-	public void setGender(String gender) {
-		this.gender = gender;
-	}
-	public String getJob() {
-		return job;
-	}
-	public void setJob(String job) {
-		this.job = job;
-	}
-	public String getRequirement() {
-		return requirement;
-	}
-	public void setRequirement(String requirement) {
-		this.requirement = requirement;
-	}
-	public String getHopeContactTime() {
-		return hopeContactTime;
-	}
-	public void setHopeContactTime(String hopeContactTime) {
-		this.hopeContactTime = hopeContactTime;
-	}
-	public String getOtherRequirement() {
-		return otherRequirement;
-	}
-	public void setOtherRequirement(String otherRequirement) {
-		this.otherRequirement = otherRequirement;
-	}
-	public String getAge() {
-		return age;
-	}
-	public void setAge(String age) {
-		this.age = age;
-	}
-	public String getAgentNo() {
-		return agentNo;
-	}
-	public void setAgentNo(String agentNo) {
-		this.agentNo = agentNo;
-	}
-    
-    
-	
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCustomerViewDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCustomerViewDTO.java
deleted file mode 100644
index 6c3f3fb..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentCustomerViewDTO.java
+++ /dev/null
@@ -1,187 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.time.Instant;
-import java.util.List;
-
-import com.pollex.pam.domain.AppointmentClosedInfo;
-import com.pollex.pam.domain.AppointmentMemo;
-import com.pollex.pam.domain.AppointmentNoticeLog;
-import com.pollex.pam.domain.InterviewRecord;
-import com.pollex.pam.enums.ContactStatusEnum;
-
-public class AppointmentCustomerViewDTO {
-
-	private Long id;
-    private String phone;
-    private String email;
-    private String contactType;
-    private String gender;
-    private String age;
-    private String job;
-    private String requirement;
-    private ContactStatusEnum communicateStatus;
-    private String hopeContactTime;
-    private String otherRequirement;
-    private Instant appointmentDate;
-    private Instant lastModifiedDate;
-    private String agentNo;
-    private Long customerId;
-    private String name;
-    private Instant consultantViewTime;
-    private Instant consultantReadTime;
-    private Instant contactTime;
-    private Float satisfactionScore;
-    private List<AppointmentMemo> appointmentMemoList;
-    private List<InterviewRecordDTO> interviewRecordDTOs;
-    private List<AppointmentNoticeLog> appointmentNoticeLogs;
-    private AppointmentClosedInfo appointmentClosedInfo;
-
-	public Long getId() {
-		return id;
-	}
-	public void setId(Long id) {
-		this.id = id;
-	}
-	public String getPhone() {
-		return phone;
-	}
-	public void setPhone(String phone) {
-		this.phone = phone;
-	}
-	public String getEmail() {
-		return email;
-	}
-	public void setEmail(String email) {
-		this.email = email;
-	}
-	public String getContactType() {
-		return contactType;
-	}
-	public void setContactType(String contactType) {
-		this.contactType = contactType;
-	}
-	public String getGender() {
-		return gender;
-	}
-	public void setGender(String gender) {
-		this.gender = gender;
-	}
-	public String getAge() {
-		return age;
-	}
-	public void setAge(String age) {
-		this.age = age;
-	}
-	public String getJob() {
-		return job;
-	}
-	public void setJob(String job) {
-		this.job = job;
-	}
-	public String getRequirement() {
-		return requirement;
-	}
-	public void setRequirement(String requirement) {
-		this.requirement = requirement;
-	}
-	public ContactStatusEnum getCommunicateStatus() {
-		return communicateStatus;
-	}
-	public void setCommunicateStatus(ContactStatusEnum communicateStatus) {
-		this.communicateStatus = communicateStatus;
-	}
-	public String getHopeContactTime() {
-		return hopeContactTime;
-	}
-	public void setHopeContactTime(String hopeContactTime) {
-		this.hopeContactTime = hopeContactTime;
-	}
-	public String getOtherRequirement() {
-		return otherRequirement;
-	}
-	public void setOtherRequirement(String otherRequirement) {
-		this.otherRequirement = otherRequirement;
-	}
-	public Instant getAppointmentDate() {
-		return appointmentDate;
-	}
-	public void setAppointmentDate(Instant appointmentDate) {
-		this.appointmentDate = appointmentDate;
-	}
-    public Instant getLastModifiedDate() {
-        return lastModifiedDate;
-    }
-    public void setLastModifiedDate(Instant lastModifiedDate) {
-        this.lastModifiedDate = lastModifiedDate;
-    }
-    public String getAgentNo() {
-		return agentNo;
-	}
-	public void setAgentNo(String agentNo) {
-		this.agentNo = agentNo;
-	}
-	public Long getCustomerId() {
-		return customerId;
-	}
-	public void setCustomerId(Long customerId) {
-		this.customerId = customerId;
-	}
-	public String getName() {
-		return name;
-	}
-	public void setName(String name) {
-		this.name = name;
-	}
-    public Instant getConsultantViewTime() {
-        return consultantViewTime;
-    }
-    public void setConsultantViewTime(Instant consultantViewTime) {
-        this.consultantViewTime = consultantViewTime;
-    }
-    public Instant getConsultantReadTime() {
-        return consultantReadTime;
-    }
-    public void setConsultantReadTime(Instant consultantReadTime) {
-        this.consultantReadTime = consultantReadTime;
-    }
-    public Instant getContactTime() {
-        return contactTime;
-    }
-    public void setContactTime(Instant contactTime) {
-        this.contactTime = contactTime;
-    }
-    public Float getSatisfactionScore() {
-        return satisfactionScore;
-    }
-    public void setSatisfactionScore(Float satisfactionScore) {
-        this.satisfactionScore = satisfactionScore;
-    }
-	public List<AppointmentMemo> getAppointmentMemoList() {
-		return appointmentMemoList;
-	}
-	public void setAppointmentMemoList(List<AppointmentMemo> appointmentMemoList) {
-		this.appointmentMemoList = appointmentMemoList;
-	}
-	public List<InterviewRecordDTO> getInterviewRecordDTOs() {
-		return interviewRecordDTOs;
-	}
-	public void setInterviewRecordDTOs(List<InterviewRecordDTO> interviewRecordDTOs) {
-		this.interviewRecordDTOs = interviewRecordDTOs;
-	}
-	public List<AppointmentNoticeLog> getAppointmentNoticeLogs() {
-		return appointmentNoticeLogs;
-	}
-	public void setAppointmentNoticeLogs(List<AppointmentNoticeLog> appointmentNoticeLogs) {
-		this.appointmentNoticeLogs = appointmentNoticeLogs;
-	}
-	public AppointmentClosedInfo getAppointmentClosedInfo() {
-		return appointmentClosedInfo;
-	}
-	public void setAppointmentClosedInfo(AppointmentClosedInfo appointmentClosedInfo) {
-		this.appointmentClosedInfo = appointmentClosedInfo;
-	}
-	
-	
-    
-    
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentDTO.java
deleted file mode 100644
index ea18083..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentDTO.java
+++ /dev/null
@@ -1,139 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.time.Instant;
-
-import org.springframework.stereotype.Service;
-
-import com.pollex.pam.enums.ContactStatusEnum;
-
-public class AppointmentDTO {
-
-	private Long id;
-    private String phone;
-    private String email;
-    private String contactType;
-    private String gender;
-    private String age;
-    private String job;
-    private String requirement;
-    private ContactStatusEnum communicateStatus;
-    private String hopeContactTime;
-    private String otherRequirement;
-    private Instant appointmentDate;
-    private Instant lastModifiedDate;
-    private String agentNo;
-    private Long customerId;
-    private Instant consultantViewTime;
-    private Instant consultantReadTime;
-    private Instant contactTime;
-
-	public Long getId() {
-		return id;
-	}
-	public void setId(Long id) {
-		this.id = id;
-	}
-	public String getPhone() {
-		return phone;
-	}
-	public void setPhone(String phone) {
-		this.phone = phone;
-	}
-	public String getEmail() {
-		return email;
-	}
-	public void setEmail(String email) {
-		this.email = email;
-	}
-	public String getContactType() {
-		return contactType;
-	}
-	public void setContactType(String contactType) {
-		this.contactType = contactType;
-	}
-	public String getGender() {
-		return gender;
-	}
-	public void setGender(String gender) {
-		this.gender = gender;
-	}
-	public String getAge() {
-		return age;
-	}
-	public void setAge(String age) {
-		this.age = age;
-	}
-	public String getJob() {
-		return job;
-	}
-	public void setJob(String job) {
-		this.job = job;
-	}
-	public String getRequirement() {
-		return requirement;
-	}
-	public void setRequirement(String requirement) {
-		this.requirement = requirement;
-	}
-	public ContactStatusEnum getCommunicateStatus() {
-		return communicateStatus;
-	}
-	public void setCommunicateStatus(ContactStatusEnum communicateStatus) {
-		this.communicateStatus = communicateStatus;
-	}
-	public String getHopeContactTime() {
-		return hopeContactTime;
-	}
-	public void setHopeContactTime(String hopeContactTime) {
-		this.hopeContactTime = hopeContactTime;
-	}
-	public String getOtherRequirement() {
-		return otherRequirement;
-	}
-	public void setOtherRequirement(String otherRequirement) {
-		this.otherRequirement = otherRequirement;
-	}
-	public Instant getAppointmentDate() {
-		return appointmentDate;
-	}
-	public void setAppointmentDate(Instant appointmentDate) {
-		this.appointmentDate = appointmentDate;
-	}
-	public String getAgentNo() {
-		return agentNo;
-	}
-	public void setAgentNo(String agentNo) {
-		this.agentNo = agentNo;
-	}
-	public Long getCustomerId() {
-		return customerId;
-	}
-	public void setCustomerId(Long customerId) {
-		this.customerId = customerId;
-	}
-    public Instant getConsultantViewTime() {
-        return consultantViewTime;
-    }
-    public void setConsultantViewTime(Instant consultantViewTime) {
-        this.consultantViewTime = consultantViewTime;
-    }
-    public Instant getConsultantReadTime() {
-        return consultantReadTime;
-    }
-    public void setConsultantReadTime(Instant consultantReadTime) {
-        this.consultantReadTime = consultantReadTime;
-    }
-    public Instant getLastModifiedDate() {
-        return lastModifiedDate;
-    }
-
-    public void setLastModifiedDate(Instant lastModifiedDate) {
-        this.lastModifiedDate = lastModifiedDate;
-    }
-    public Instant getContactTime() {
-        return contactTime;
-    }
-    public void setContactTime(Instant contactTime) {
-        this.contactTime = contactTime;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentMemoCreateDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentMemoCreateDTO.java
deleted file mode 100644
index 1750480..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentMemoCreateDTO.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.pollex.pam.service.dto;
-
-public class AppointmentMemoCreateDTO {
-	
-    private String content;
-    private Long appointmentId;
-    
-	public String getContent() {
-		return content;
-	}
-	public void setContent(String content) {
-		this.content = content;
-	}
-	public Long getAppointmentId() {
-		return appointmentId;
-	}
-	public void setAppointmentId(Long appointmentId) {
-		this.appointmentId = appointmentId;
-	}
-    
-    
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentMemoUpdateDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentMemoUpdateDTO.java
deleted file mode 100644
index 262838a..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentMemoUpdateDTO.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.pollex.pam.service.dto;
-
-public class AppointmentMemoUpdateDTO{
-	
-	private Long id;
-	private String content;
-
-	public Long getId() {
-		return id;
-	}
-
-	public void setId(Long id) {
-		this.id = id;
-	}
-
-	public String getContent() {
-		return content;
-	}
-
-	public void setContent(String content) {
-		this.content = content;
-	}
-	
-	
-	
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentNoticeSendDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentNoticeSendDTO.java
deleted file mode 100644
index 2256fc8..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentNoticeSendDTO.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.util.Date;
-
-public class AppointmentNoticeSendDTO {
-	
-	private String message;
-	private Long appointmentId;
-	private String email;
-	private String phone;
-//	private String noticeType;
-	private Date interviewDate;
-	
-	public String getMessage() {
-		return message;
-	}
-	public void setMessage(String message) {
-		this.message = message;
-	}
-	public Long getAppointmentId() {
-		return appointmentId;
-	}
-	public void setAppointmentId(Long appointmentId) {
-		this.appointmentId = appointmentId;
-	}
-//	public String getNoticeType() {
-//		return noticeType;
-//	}
-//	public void setNoticeType(String noticeType) {
-//		this.noticeType = noticeType;
-//	}
-	public String getEmail() {
-		return email;
-	}
-	public void setEmail(String email) {
-		this.email = email;
-	}
-	public String getPhone() {
-		return phone;
-	}
-	public void setPhone(String phone) {
-		this.phone = phone;
-	}
-	public Date getInterviewDate() {
-		return interviewDate;
-	}
-	public void setInterviewDate(Date interviewDate) {
-		this.interviewDate = interviewDate;
-	}
-	
-	
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentUpdateDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentUpdateDTO.java
deleted file mode 100644
index 0be3753..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/AppointmentUpdateDTO.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.pollex.pam.service.dto;
-
-public class AppointmentUpdateDTO {
-    private Long id;
-    private String phone;
-    private String email;
-    private String contactType;
-    private String gender;
-    private String age;
-    private String job;
-    private String requirement;
-    private String hopeContactTime;
-    private String otherRequirement;
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public String getContactType() {
-        return contactType;
-    }
-
-    public void setContactType(String contactType) {
-        this.contactType = contactType;
-    }
-
-    public String getGender() {
-        return gender;
-    }
-
-    public void setGender(String gender) {
-        this.gender = gender;
-    }
-
-    public String getAge() {
-        return age;
-    }
-
-    public void setAge(String age) {
-        this.age = age;
-    }
-
-    public String getJob() {
-        return job;
-    }
-
-    public void setJob(String job) {
-        this.job = job;
-    }
-
-    public String getRequirement() {
-        return requirement;
-    }
-
-    public void setRequirement(String requirement) {
-        this.requirement = requirement;
-    }
-
-    public String getHopeContactTime() {
-        return hopeContactTime;
-    }
-
-    public void setHopeContactTime(String hopeContactTime) {
-        this.hopeContactTime = hopeContactTime;
-    }
-
-    public String getOtherRequirement() {
-        return otherRequirement;
-    }
-
-    public void setOtherRequirement(String otherRequirement) {
-        this.otherRequirement = otherRequirement;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/ClosedProcessDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/ClosedProcessDTO.java
deleted file mode 100644
index 9b18da4..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/ClosedProcessDTO.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.pollex.pam.service.dto;
-
-public class ClosedProcessDTO extends AbstractAppointmentProcessDTO{
-	
-	private String remark;
-	private String closedReason;
-	private String closedOtherReason;
-	
-	public String getRemark() {
-		return remark;
-	}
-	public void setRemark(String remark) {
-		this.remark = remark;
-	}
-	public String getClosedReason() {
-		return closedReason;
-	}
-	public void setClosedReason(String closedReason) {
-		this.closedReason = closedReason;
-	}
-	public String getClosedOtherReason() {
-		return closedOtherReason;
-	}
-	public void setClosedOtherReason(String closedOtherReason) {
-		this.closedOtherReason = closedOtherReason;
-	}
-	
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDTO.java
deleted file mode 100644
index f847769..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDTO.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.pollex.pam.enums.ContactStatusEnum;
-
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-import java.util.List;
-
-public class ConsultantDTO {
-
-    @JsonProperty("new")
-    private boolean newConsultant;
-    private String agentNo;
-    private String name;
-    private String img;
-    private List<String> expertise;
-    private Float avgScore;
-    private ContactStatusEnum contactStatus;
-    private Instant updateTime;
-    private String role;
-    private String seniority;
-    private int suitability;
-
-    public boolean isNewConsultant() {
-        if(updateTime != null){
-            Instant nowTimestamp = Instant.now();
-            return ChronoUnit.DAYS.between(updateTime, nowTimestamp) < 3;
-        }
-        return false;
-    }
-
-    public String getAgentNo() {
-        return agentNo;
-    }
-
-    public void setAgentNo(String agentNo) {
-        this.agentNo = agentNo;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getImg() {
-        return img;
-    }
-
-    public void setImg(String img) {
-        this.img = img;
-    }
-
-    public List<String> getExpertise() {
-        return expertise;
-    }
-
-    public void setExpertise(List<String> expertise) {
-        this.expertise = expertise;
-    }
-
-    public Float getAvgScore() {
-        return avgScore;
-    }
-
-    public void setAvgScore(Float avgScore) {
-        this.avgScore = avgScore;
-    }
-
-    public ContactStatusEnum getContactStatus() {
-        return contactStatus;
-    }
-
-    public void setContactStatus(ContactStatusEnum contactStatus) {
-        this.contactStatus = contactStatus;
-    }
-
-    public Instant getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setUpdateTime(Instant updateTime) {
-        this.updateTime = updateTime;
-    }
-
-    public String getRole() {
-        return role;
-    }
-
-    public void setRole(String role) {
-        this.role = role;
-    }
-
-    public String getSeniority() {
-        return seniority;
-    }
-
-    public void setSeniority(String seniority) {
-        this.seniority = seniority;
-    }
-
-    public void setNewConsultant(boolean newConsultant) {
-        this.newConsultant = newConsultant;
-    }
-
-    public int getSuitability() {
-        return suitability;
-    }
-
-    public void setSuitability(int suitability) {
-        this.suitability = suitability;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java
deleted file mode 100644
index f514e9d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantDetailDTO.java
+++ /dev/null
@@ -1,193 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.time.Instant;
-import java.util.List;
-
-import com.pollex.pam.enums.GenderEnum;
-
-public class ConsultantDetailDTO {
-
-    private String name;
-    private String agentNo;
-    private String role;
-    private String img;
-    private Float avgScore;
-    private String title;
-    private String phoneNumber;
-    private String serveArea;
-    private String companyAddress;
-    private Instant latestLoginTime;
-    private String seniority;
-    private Number nearlyMonthAppointmentCount;
-    private Number allAppointmentCount;
-    private List<String> expertise;
-    private String concept;
-    private String experiences;
-    private String awards;
-    private GenderEnum gender;
-    private String communicationStyle;
-    private String email;
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getAgentNo() {
-        return agentNo;
-    }
-
-    public void setAgentNo(String agentNo) {
-        this.agentNo = agentNo;
-    }
-
-    public String getRole() {
-        return role;
-    }
-
-    public void setRole(String role) {
-        this.role = role;
-    }
-
-    public String getImg() {
-        return img;
-    }
-
-    public void setImg(String img) {
-        this.img = img;
-    }
-
-    public Float getAvgScore() {
-        return avgScore;
-    }
-
-    public void setAvgScore(Float avgScore) {
-        this.avgScore = avgScore;
-    }
-
-    public String getTitle() {
-        return title;
-    }
-
-    public void setTitle(String title) {
-        this.title = title;
-    }
-
-    public String getPhoneNumber() {
-        return phoneNumber;
-    }
-
-    public void setPhoneNumber(String phoneNumber) {
-        this.phoneNumber = phoneNumber;
-    }
-
-    public String getServeArea() {
-        return serveArea;
-    }
-
-    public void setServeArea(String serveArea) {
-        this.serveArea = serveArea;
-    }
-
-    public String getCompanyAddress() {
-        return companyAddress;
-    }
-
-    public void setCompanyAddress(String companyAddress) {
-        this.companyAddress = companyAddress;
-    }
-
-    public Instant getLatestLoginTime() {
-        return latestLoginTime;
-    }
-
-    public void setLatestLoginTime(Instant latestLoginTime) {
-        this.latestLoginTime = latestLoginTime;
-    }
-
-    public String getSeniority() {
-        return seniority;
-    }
-
-    public void setSeniority(String seniority) {
-        this.seniority = seniority;
-    }
-
-    public Number getNearlyMonthAppointmentCount() {
-        return nearlyMonthAppointmentCount;
-    }
-
-    public void setNearlyMonthAppointmentCount(Number nearlyMonthAppointmentCount) {
-        this.nearlyMonthAppointmentCount = nearlyMonthAppointmentCount;
-    }
-
-    public Number getAllAppointmentCount() {
-        return allAppointmentCount;
-    }
-
-    public void setAllAppointmentCount(Number allAppointmentCount) {
-        this.allAppointmentCount = allAppointmentCount;
-    }
-
-    public List<String> getExpertise() {
-        return expertise;
-    }
-
-    public void setExpertise(List<String> expertise) {
-        this.expertise = expertise;
-    }
-
-    public String getConcept() {
-        return concept;
-    }
-
-    public void setConcept(String concept) {
-        this.concept = concept;
-    }
-
-    public String getExperiences() {
-        return experiences;
-    }
-
-    public void setExperiences(String experiences) {
-        this.experiences = experiences;
-    }
-
-    public String getAwards() {
-        return awards;
-    }
-
-    public void setAwards(String awards) {
-        this.awards = awards;
-    }
-
-	public GenderEnum getGender() {
-		return gender;
-	}
-
-	public void setGender(GenderEnum gender) {
-		this.gender = gender;
-	}
-
-	public String getCommunicationStyle() {
-		return communicationStyle;
-	}
-
-	public void setCommunicationStyle(String communicationStyle) {
-		this.communicationStyle = communicationStyle;
-	}
-
-	public String getEmail() {
-		return email;
-	}
-
-	public void setEmail(String email) {
-		this.email = email;
-	}
-
-
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantEditDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantEditDTO.java
deleted file mode 100644
index 73c397c..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/ConsultantEditDTO.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.util.List;
-
-import com.google.gson.annotations.Expose;
-import com.pollex.pam.enums.GenderEnum;
-
-public class ConsultantEditDTO {
-
-//	private Long id;
-    private String name;
-    private List<String> expertise;
-    private String title;
-    private String role;
-    private String serveArea;
-    private GenderEnum gender;
-    private String phoneNumber;
-    private String email;
-    private String companyAddress;
-    private Long seniorityYear;
-    private Long seniorityMonth;
-    private String concept;
-    private String experiences;
-    private String awards;
-    private String communicationStyle;
-
-    @Expose
-    private String photoBase64;
-
-    private String photoFileName;
-    private String agentNo;
-
-//	public Long getId() {
-//		return id;
-//	}
-//	public void setId(Long id) {
-//		this.id = id;
-//	}
-	public String getName() {
-		return name;
-	}
-	public void setName(String name) {
-		this.name = name;
-	}
-	public List<String> getExpertise() {
-		return expertise;
-	}
-	public void setExpertise(List<String> expertise) {
-		this.expertise = expertise;
-	}
-	public String getTitle() {
-		return title;
-	}
-	public void setTitle(String title) {
-		this.title = title;
-	}
-	public String getRole() {
-		return role;
-	}
-	public void setRole(String role) {
-		this.role = role;
-	}
-	public String getServeArea() {
-		return serveArea;
-	}
-	public void setServeArea(String serveArea) {
-		this.serveArea = serveArea;
-	}
-	public GenderEnum getGender() {
-		return gender;
-	}
-	public void setGender(GenderEnum gender) {
-		this.gender = gender;
-	}
-	public String getPhoneNumber() {
-		return phoneNumber;
-	}
-	public void setPhoneNumber(String phoneNumber) {
-		this.phoneNumber = phoneNumber;
-	}
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public void setPhotoFileName(String photoFileName) {
-        this.photoFileName = photoFileName;
-    }
-
-    public String getCompanyAddress() {
-		return companyAddress;
-	}
-	public void setCompanyAddress(String companyAddress) {
-		this.companyAddress = companyAddress;
-	}
-	public Long getSeniorityYear() {
-		return seniorityYear;
-	}
-	public void setSeniorityYear(Long seniorityYear) {
-		this.seniorityYear = seniorityYear;
-	}
-	public Long getSeniorityMonth() {
-		return seniorityMonth;
-	}
-	public void setSeniorityMonth(Long seniorityMonth) {
-		this.seniorityMonth = seniorityMonth;
-	}
-	public String getConcept() {
-		return concept;
-	}
-	public void setConcept(String concept) {
-		this.concept = concept;
-	}
-	public String getExperiences() {
-		return experiences;
-	}
-	public void setExperiences(String experiences) {
-		this.experiences = experiences;
-	}
-	public String getAwards() {
-		return awards;
-	}
-	public void setAwards(String awards) {
-		this.awards = awards;
-	}
-	public String getCommunicationStyle() {
-		return communicationStyle;
-	}
-	public void setCommunicationStyle(String communicationStyle) {
-		this.communicationStyle = communicationStyle;
-	}
-	public String getPhotoBase64() {
-		return photoBase64;
-	}
-	public void setPhotoBase64(String photoBase64) {
-		this.photoBase64 = photoBase64;
-	}
-	public String getPhotoFileName() {
-		return "consultant_"+this.getAgentNo()+".jpg";
-	}
-	public String getAgentNo() {
-		return agentNo;
-	}
-	public void setAgentNo(String agentNo) {
-		this.agentNo = agentNo;
-	}
-
-
-
-
-
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/CustomerDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/CustomerDTO.java
deleted file mode 100644
index 176dc0b..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/CustomerDTO.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.pollex.pam.service.dto;
-
-public class CustomerDTO {
-    private String email;
-    private String phone;
-    private String name;
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/CustomerFavoriteConsultantDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/CustomerFavoriteConsultantDTO.java
deleted file mode 100644
index bdcdfd6..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/CustomerFavoriteConsultantDTO.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.pollex.pam.enums.ContactStatusEnum;
-
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-import java.util.List;
-
-public class CustomerFavoriteConsultantDTO {
-
-    private String agentNo;
-    private String name;
-    private String img;
-    private List<String> expertise;
-    private Float avgScore;
-    private ContactStatusEnum contactStatus;
-    private Instant createTime;
-    private Instant updateTime;
-    private Instant customerViewTime;
-    private String role;
-    private String seniority;
-    private List<AppointmentCustomerViewDTO> appointments;
-
-    public String getAgentNo() {
-        return agentNo;
-    }
-
-    public void setAgentNo(String agentNo) {
-        this.agentNo = agentNo;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-    public String getImg() {
-        return img;
-    }
-
-    public void setImg(String img) {
-        this.img = img;
-    }
-
-    public List<String> getExpertise() {
-        return expertise;
-    }
-
-    public void setExpertise(List<String> expertise) {
-        this.expertise = expertise;
-    }
-
-    public Float getAvgScore() {
-        return avgScore;
-    }
-
-    public void setAvgScore(Float avgScore) {
-        this.avgScore = avgScore;
-    }
-
-    public ContactStatusEnum getContactStatus() {
-        return contactStatus;
-    }
-
-    public void setContactStatus(ContactStatusEnum contactStatus) {
-        this.contactStatus = contactStatus;
-    }
-
-    public Instant getCreateTime() {
-        return createTime;
-    }
-
-    public Instant getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setCreateTime(Instant createTime) {
-        this.createTime = createTime;
-    }
-
-    public void setUpdateTime(Instant updateTime) {
-        this.updateTime = updateTime;
-    }
-
-    public Instant getCustomerViewTime() {
-        return customerViewTime;
-    }
-
-    public void setCustomerViewTime(Instant customerViewTime) {
-        this.customerViewTime = customerViewTime;
-    }
-
-    public String getRole() {
-        return role;
-    }
-
-    public void setRole(String role) {
-        this.role = role;
-    }
-
-    public String getSeniority() {
-        return seniority;
-    }
-
-    public void setSeniority(String seniority) {
-        this.seniority = seniority;
-    }
-
-    public List<AppointmentCustomerViewDTO> getAppointments() {
-        return appointments;
-    }
-
-    public void setAppointments(List<AppointmentCustomerViewDTO> appointments) {
-        this.appointments = appointments;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/CustomerRegisterDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/CustomerRegisterDTO.java
deleted file mode 100644
index 058cc56..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/CustomerRegisterDTO.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.pollex.pam.enums.OtpLoginTypeEnum;
-
-public class CustomerRegisterDTO {
-	
-    private String name;
-    private String phone;
-    private String email;
-    private OtpLoginTypeEnum contactType;
-    private String indexKey;
-    private String otpCode;
-    
-	public String getName() {
-		return name;
-	}
-	public void setName(String name) {
-		this.name = name;
-	}
-	public String getPhone() {
-		return phone;
-	}
-	public void setPhone(String phone) {
-		this.phone = phone;
-	}
-	public String getEmail() {
-		return email;
-	}
-	public void setEmail(String email) {
-		this.email = email;
-	}
-	public OtpLoginTypeEnum getContactType() {
-		return contactType;
-	}
-	public void setContactType(OtpLoginTypeEnum contactType) {
-		this.contactType = contactType;
-	}
-	public String getIndexKey() {
-		return indexKey;
-	}
-	public void setIndexKey(String indexKey) {
-		this.indexKey = indexKey;
-	}
-	public String getOtpCode() {
-		return otpCode;
-	}
-	public void setOtpCode(String otpCode) {
-		this.otpCode = otpCode;
-	}
-    
-    
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/DoneProcessDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/DoneProcessDTO.java
deleted file mode 100644
index 2c9881a..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/DoneProcessDTO.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.util.Date;
-
-public class DoneProcessDTO extends AbstractAppointmentProcessDTO{
-	
-	private String policyholderIdentityId;
-	private String planCode;
-	private Date policyEntryDate;
-	private String remark;
-	
-	public String getPolicyholderIdentityId() {
-		return policyholderIdentityId;
-	}
-	public void setPolicyholderIdentityId(String policyholderIdentityId) {
-		this.policyholderIdentityId = policyholderIdentityId;
-	}
-	public String getPlanCode() {
-		return planCode;
-	}
-	public void setPlanCode(String planCode) {
-		this.planCode = planCode;
-	}
-	public Date getPolicyEntryDate() {
-		return policyEntryDate;
-	}
-	public void setPolicyEntryDate(Date policyEntryDate) {
-		this.policyEntryDate = policyEntryDate;
-	}
-	public String getRemark() {
-		return remark;
-	}
-	public void setRemark(String remark) {
-		this.remark = remark;
-	}
-	
-	
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/EServiceRequest.java b/pamapi/src/main/java/com/pollex/pam/service/dto/EServiceRequest.java
deleted file mode 100644
index 00e139d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/EServiceRequest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.pollex.pam.service.dto;
-
-public class EServiceRequest {
-    private String func;
-    private String id;
-    private String pin;
-    private String pwd;
-    private String sys;
-
-    public String getFunc() {
-        return func;
-    }
-
-    public void setFunc(String func) {
-        this.func = func;
-    }
-
-    public String getId() {
-        return id;
-    }
-
-    public void setId(String id) {
-        this.id = id;
-    }
-
-    public String getPin() {
-        return pin;
-    }
-
-    public void setPin(String pin) {
-        this.pin = pin;
-    }
-
-    public String getPwd() {
-        return pwd;
-    }
-
-    public void setPwd(String pwd) {
-        this.pwd = pwd;
-    }
-
-    public String getSys() {
-        return sys;
-    }
-
-    public void setSys(String sys) {
-        this.sys = sys;
-    }
-}
-
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/EServiceResponse.java b/pamapi/src/main/java/com/pollex/pam/service/dto/EServiceResponse.java
deleted file mode 100644
index a04681d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/EServiceResponse.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.util.List;
-
-public class EServiceResponse {
-    private String issuccess;
-    private String code;
-    private String msg;
-    private List<EServiceData> data;
-
-    public String getIssuccess() {
-        return issuccess;
-    }
-
-    public void setIssuccess(String issuccess) {
-        this.issuccess = issuccess;
-    }
-
-    public String getCode() {
-        return code;
-    }
-
-    public void setCode(String code) {
-        this.code = code;
-    }
-
-    public String getMsg() {
-        return msg;
-    }
-
-    public void setMsg(String msg) {
-        this.msg = msg;
-    }
-
-    public List<EServiceData> getData() {
-        return data;
-    }
-
-    public void setData(List<EServiceData> data) {
-        this.data = data;
-    }
-
-    @Override
-    public String toString() {
-        return "EServiceResponse{" +
-            "issuccess='" + issuccess + '\'' +
-            ", code='" + code + '\'' +
-            ", msg='" + msg + '\'' +
-            '}';
-    }
-}
-
-class EServiceData {
-    private String usr;
-    private String isactive;
-    private String role;
-
-    public String getUsr() {
-        return usr;
-    }
-
-    public void setUsr(String usr) {
-        this.usr = usr;
-    }
-
-    public String getIsactive() {
-        return isactive;
-    }
-
-    public void setIsactive(String isactive) {
-        this.isactive = isactive;
-    }
-
-    public String getRole() {
-        return role;
-    }
-
-    public void setRole(String role) {
-        this.role = role;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/FastQueryConsultantParam.java b/pamapi/src/main/java/com/pollex/pam/service/dto/FastQueryConsultantParam.java
deleted file mode 100644
index a8c443d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/FastQueryConsultantParam.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.pollex.pam.enums.GenderEnum;
-
-import java.util.List;
-
-public class FastQueryConsultantParam {
-
-    private GenderEnum gender;
-    private List<String> communicationStyles;
-    private Number avgScore;
-    private String status;
-    private String seniority;
-
-    public GenderEnum getGender() {
-        return gender;
-    }
-
-    public void setGender(GenderEnum gender) {
-        this.gender = gender;
-    }
-
-    public List<String> getCommunicationStyles() {
-        return communicationStyles;
-    }
-
-    public void setCommunicationStyles(List<String> communicationStyles) {
-        this.communicationStyles = communicationStyles;
-    }
-
-    public Number getAvgScore() {
-        return avgScore;
-    }
-
-    public void setAvgScore(Number avgScore) {
-        this.avgScore = avgScore;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getSeniority() {
-        return seniority;
-    }
-
-    public void setSeniority(String seniority) {
-        this.seniority = seniority;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/InterviewRecordDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/InterviewRecordDTO.java
deleted file mode 100644
index 83c3a7b..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/InterviewRecordDTO.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.time.Instant;
-import java.util.Date;
-
-public class InterviewRecordDTO {
-	
-	private Long id;
-	private String content;
-	private Instant createdDate;
-    private Instant lastModifiedDate;
-    private String createdBy;
-    private String lastModifiedBy;
-    private Date interviewDate;
-    private Long appointmentId;
-    
-	public Long getId() {
-		return id;
-	}
-	public void setId(Long id) {
-		this.id = id;
-	}
-	public String getContent() {
-		return content;
-	}
-	public void setContent(String content) {
-		this.content = content;
-	}
-	public Instant getCreatedDate() {
-		return createdDate;
-	}
-	public void setCreatedDate(Instant createdDate) {
-		this.createdDate = createdDate;
-	}
-	public Instant getLastModifiedDate() {
-		return lastModifiedDate;
-	}
-	public void setLastModifiedDate(Instant lastModifiedDate) {
-		this.lastModifiedDate = lastModifiedDate;
-	}
-	public String getCreatedBy() {
-		return createdBy;
-	}
-	public void setCreatedBy(String createdBy) {
-		this.createdBy = createdBy;
-	}
-	public String getLastModifiedBy() {
-		return lastModifiedBy;
-	}
-	public void setLastModifiedBy(String lastModifiedBy) {
-		this.lastModifiedBy = lastModifiedBy;
-	}
-	public Date getInterviewDate() {
-		return interviewDate;
-	}
-	public void setInterviewDate(Date interviewDate) {
-		this.interviewDate = interviewDate;
-	}
-	public Long getAppointmentId() {
-		return appointmentId;
-	}
-	public void setAppointmentId(Long appointmentId) {
-		this.appointmentId = appointmentId;
-	}
-    
-    
-    
-	
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/OtpResponseDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/OtpResponseDTO.java
deleted file mode 100644
index 68d0704..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/OtpResponseDTO.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class OtpResponseDTO {
-    private static final String OTP_SUCCESS_CODE = "0";
-    private final String indexKey;
-    private final boolean success;
-    private final String failCode;
-    private final String failReason;
-
-    public OtpResponseDTO(String[] strings) {
-        this(Arrays.asList(strings));
-    }
-
-    public OtpResponseDTO(List<String> strings) {
-        if(strings.size() == 4) {
-            this.indexKey = strings.get(0);
-            this.success = OTP_SUCCESS_CODE.equals(strings.get(1));
-            this.failCode = strings.get(2);
-            this.failReason = strings.get(3);
-        }
-        else {
-            throw new IllegalArgumentException("the otp response can't format: " + strings);
-        }
-    }
-
-    public String getIndexKey() {
-        return indexKey;
-    }
-
-    public boolean isSuccess() {
-        return success;
-    }
-
-    public String getFailCode() {
-        return failCode;
-    }
-
-    public String getFailReason() {
-        return failReason;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/PasswordChangeDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/PasswordChangeDTO.java
deleted file mode 100644
index 0ad177f..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/PasswordChangeDTO.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.pollex.pam.service.dto;
-
-/**
- * A DTO representing a password change required data - current and new password.
- */
-public class PasswordChangeDTO {
-
-    private String currentPassword;
-    private String newPassword;
-
-    public PasswordChangeDTO() {
-        // Empty constructor needed for Jackson.
-    }
-
-    public PasswordChangeDTO(String currentPassword, String newPassword) {
-        this.currentPassword = currentPassword;
-        this.newPassword = newPassword;
-    }
-
-    public String getCurrentPassword() {
-        return currentPassword;
-    }
-
-    public void setCurrentPassword(String currentPassword) {
-        this.currentPassword = currentPassword;
-    }
-
-    public String getNewPassword() {
-        return newPassword;
-    }
-
-    public void setNewPassword(String newPassword) {
-        this.newPassword = newPassword;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SMSDetail.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SMSDetail.java
deleted file mode 100644
index 8cbc3da..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/SMSDetail.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class SMSDetail {
-    private String mobile;
-    private String content;
-
-    @JsonProperty("mobile")
-    public String getMobile() {
-        return mobile;
-    }
-
-    public void setMobile(String mobile) {
-        this.mobile = mobile;
-    }
-
-    @JsonProperty("content")
-    public String getContent() {
-        return content;
-    }
-
-    public void setContent(String content) {
-        this.content = content;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionCustomerScoreDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionCustomerScoreDTO.java
deleted file mode 100644
index 1cbf0e3..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionCustomerScoreDTO.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.pollex.pam.enums.SatisfactionTypeEnum;
-
-public class SatisfactionCustomerScoreDTO {
-
-	private Long appointmentId;
-	private Float score;
-    private SatisfactionTypeEnum type;
-
-	public Long getAppointmentId() {
-		return appointmentId;
-	}
-	public void setAppointmentId(Long appointmentId) {
-		this.appointmentId = appointmentId;
-	}
-	public Float getScore() {
-		return score;
-	}
-	public void setScore(Float score) {
-		this.score = score;
-	}
-    public SatisfactionTypeEnum getType() {
-        return type;
-    }
-    public void setType(SatisfactionTypeEnum type) {
-        this.type = type;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionDTO.java
deleted file mode 100644
index 152a82d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionDTO.java
+++ /dev/null
@@ -1,88 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.time.Instant;
-
-import com.pollex.pam.enums.SatisfactionStatusEnum;
-import com.pollex.pam.enums.SatisfactionTypeEnum;
-
-public class SatisfactionDTO {
-
-	private Long id;
-    private Instant createdDate;
-    private Instant lastModifiedDate;
-    private Long customerId;
-    private String agentNo;
-    private SatisfactionStatusEnum status;
-    private Float score;
-    private Long appointmentId;
-    private String customerName;
-    private String agentName;
-    private SatisfactionTypeEnum type;
-
-	public Long getId() {
-		return id;
-	}
-	public void setId(Long id) {
-		this.id = id;
-	}
-	public Instant getCreatedDate() {
-		return createdDate;
-	}
-	public void setCreatedDate(Instant createdDate) {
-		this.createdDate = createdDate;
-	}
-	public Instant getLastModifiedDate() {
-		return lastModifiedDate;
-	}
-	public void setLastModifiedDate(Instant lastModifiedDate) {
-		this.lastModifiedDate = lastModifiedDate;
-	}
-	public Long getCustomerId() {
-		return customerId;
-	}
-	public void setCustomerId(Long customerId) {
-		this.customerId = customerId;
-	}
-	public String getAgentNo() {
-		return agentNo;
-	}
-	public void setAgentNo(String agentNo) {
-		this.agentNo = agentNo;
-	}
-	public SatisfactionStatusEnum getStatus() {
-		return status;
-	}
-	public void setStatus(SatisfactionStatusEnum status) {
-		this.status = status;
-	}
-	public Float getScore() {
-		return score;
-	}
-	public void setScore(Float score) {
-		this.score = score;
-	}
-	public Long getAppointmentId() {
-		return appointmentId;
-	}
-	public void setAppointmentId(Long appointmentId) {
-		this.appointmentId = appointmentId;
-	}
-	public String getCustomerName() {
-		return customerName;
-	}
-	public void setCustomerName(String customerName) {
-		this.customerName = customerName;
-	}
-	public String getAgentName() {
-		return agentName;
-	}
-	public void setAgentName(String agentName) {
-		this.agentName = agentName;
-	}
-    public SatisfactionTypeEnum getType() {
-        return type;
-    }
-    public void setType(SatisfactionTypeEnum type) {
-        this.type = type;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionUpdateDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionUpdateDTO.java
deleted file mode 100644
index 1a8435f..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/SatisfactionUpdateDTO.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.pollex.pam.service.dto;
-
-public class SatisfactionUpdateDTO {
-	
-	private Long id;
-    private Long customerId;
-    private String agentNo;
-    private String status;
-    private String score;
-    
-	public Long getId() {
-		return id;
-	}
-	public void setId(Long id) {
-		this.id = id;
-	}
-	public Long getCustomerId() {
-		return customerId;
-	}
-	public void setCustomerId(Long customerId) {
-		this.customerId = customerId;
-	}
-	public String getAgentNo() {
-		return agentNo;
-	}
-	public void setAgentNo(String agentNo) {
-		this.agentNo = agentNo;
-	}
-	public String getStatus() {
-		return status;
-	}
-	public void setStatus(String status) {
-		this.status = status;
-	}
-	public String getScore() {
-		return score;
-	}
-	public void setScore(String score) {
-		this.score = score;
-	}
-    
-    
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailRequest.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailRequest.java
deleted file mode 100644
index 2470a67..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailRequest.java
+++ /dev/null
@@ -1,103 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import java.util.List;
-
-public class SendMailRequest {
-
-    /**
-     * �隞嗉��
-     */
-    private List<String> sendMailAddresses;
-    /**
-     * ��
-     */
-    private List<String> sendCCMailAddresses;
-    /**
-     * 銝駁��
-     */
-    private String subject;
-    /**
-     * ����
-     */
-    private String content;
-    /**
-     * 撖辣��
-     */
-    private String from;
-    /**
-     * ��辣頝臬��
-     */
-    private List<String> attachments;
-    /**
-     * �� html format
-     */
-    private boolean htmlFormat;
-    /**
-     * �摰儔閮���� (������������神甇餃�pos)
-     */
-    private String functionId;
-
-    public List<String> getSendMailAddresses() {
-        return sendMailAddresses;
-    }
-
-    public void setSendMailAddresses(List<String> sendMailAddresses) {
-        this.sendMailAddresses = sendMailAddresses;
-    }
-
-    public List<String> getSendCCMailAddresses() {
-        return sendCCMailAddresses;
-    }
-
-    public void setSendCCMailAddresses(List<String> sendCCMailAddresses) {
-        this.sendCCMailAddresses = sendCCMailAddresses;
-    }
-
-    public String getSubject() {
-        return subject;
-    }
-
-    public void setSubject(String subject) {
-        this.subject = subject;
-    }
-
-    public String getContent() {
-        return content;
-    }
-
-    public void setContent(String content) {
-        this.content = content;
-    }
-
-    public String getFrom() {
-        return from;
-    }
-
-    public void setFrom(String from) {
-        this.from = from;
-    }
-
-    public List<String> getAttachments() {
-        return attachments;
-    }
-
-    public void setAttachments(List<String> attachments) {
-        this.attachments = attachments;
-    }
-
-    public boolean isHtmlFormat() {
-        return htmlFormat;
-    }
-
-    public void setHtmlFormat(boolean htmlFormat) {
-        this.htmlFormat = htmlFormat;
-    }
-
-    public String getFunctionId() {
-        return functionId;
-    }
-
-    public void setFunctionId(String functionId) {
-        this.functionId = functionId;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailResponse.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailResponse.java
deleted file mode 100644
index aee72f7..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/SendMailResponse.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-
-@JsonIgnoreProperties(ignoreUnknown = true)
-public class SendMailResponse {
-    private Data data;
-
-    public Data getData() {
-        return data;
-    }
-
-    public void setData(Data data) {
-        this.data = data;
-    }
-
-    @JsonIgnoreProperties(ignoreUnknown = true)
-    public static class Data {
-        private String messageStatus;
-
-        public String getMessageStatus() {
-            return messageStatus;
-        }
-
-        public void setMessageStatus(String messageStatus) {
-            this.messageStatus = messageStatus;
-        }
-
-        @Override
-        public String toString() {
-            return "Data{" +
-                "messageStatus='" + messageStatus + '\'' +
-                '}';
-        }
-    }
-
-    @Override
-    public String toString() {
-        return "SendMailResponse{" +
-            "data=" + data +
-            '}';
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSRequest.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSRequest.java
deleted file mode 100644
index de3aa42..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSRequest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-import java.util.List;
-
-public class SendSMSRequest {
-
-    private String pKey;
-    private String sourceCode;
-    private String sender;
-    private String sendTime;
-    private String subject;
-    private String activityId;
-    private String mmsPath;
-    private String msgTypeSet;
-    private List<SMSDetail> detail;
-
-    @JsonProperty("p_key")
-    public String getpKey() {
-        return pKey;
-    }
-
-    public void setpKey(String pKey) {
-        this.pKey = pKey;
-    }
-
-    @JsonProperty("source_code")
-    public String getSourceCode() {
-        return sourceCode;
-    }
-
-    public void setSourceCode(String sourceCode) {
-        this.sourceCode = sourceCode;
-    }
-
-    @JsonProperty("sender")
-    public String getSender() {
-        return sender;
-    }
-
-    public void setSender(String sender) {
-        this.sender = sender;
-    }
-
-    @JsonProperty("send_time")
-    public String getSendTime() {
-        return sendTime;
-    }
-
-    public void setSendTime(String sendTime) {
-        this.sendTime = sendTime;
-    }
-
-    @JsonProperty("subject")
-    public String getSubject() {
-        return subject;
-    }
-
-    public void setSubject(String subject) {
-        this.subject = subject;
-    }
-
-    @JsonProperty("activity_id")
-    public String getActivityId() {
-        return activityId;
-    }
-
-    public void setActivityId(String activityId) {
-        this.activityId = activityId;
-    }
-
-    @JsonProperty("mms_path")
-    public String getMmsPath() {
-        return mmsPath;
-    }
-
-    public void setMmsPath(String mmsPath) {
-        this.mmsPath = mmsPath;
-    }
-
-    @JsonProperty("msg_type_set")
-    public String getMsgTypeSet() {
-        return msgTypeSet;
-    }
-
-    public void setMsgTypeSet(String msgTypeSet) {
-        this.msgTypeSet = msgTypeSet;
-    }
-
-    @JsonProperty("detail")
-    public List<SMSDetail> getDetail() {
-        return detail;
-    }
-
-    public void setDetail(List<SMSDetail> detail) {
-        this.detail = detail;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSResponse.java b/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSResponse.java
deleted file mode 100644
index 9073766..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/SendSMSResponse.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class SendSMSResponse {
-
-    @JsonProperty("p_key")
-    private String pKey;
-
-    @JsonProperty("return_code")
-    private String returnCode;
-
-    @JsonProperty("msg_batchNo")
-    private String msgBatchNo;
-
-    @JsonProperty("error_msg")
-    private String errorMsg;
-
-    public String getpKey() {
-        return pKey;
-    }
-
-    public void setpKey(String pKey) {
-        this.pKey = pKey;
-    }
-
-    public String getReturnCode() {
-        return returnCode;
-    }
-
-    public void setReturnCode(String returnCode) {
-        this.returnCode = returnCode;
-    }
-
-    public String getMsgBatchNo() {
-        return msgBatchNo;
-    }
-
-    public void setMsgBatchNo(String msgBatchNo) {
-        this.msgBatchNo = msgBatchNo;
-    }
-
-    public String getErrorMsg() {
-        return errorMsg;
-    }
-
-    public void setErrorMsg(String errorMsg) {
-        this.errorMsg = errorMsg;
-    }
-
-    @Override
-    public String toString() {
-        return "SendSMSResponse{" +
-            "pKey='" + pKey + '\'' +
-            ", returnCode='" + returnCode + '\'' +
-            ", msgBatchNo='" + msgBatchNo + '\'' +
-            ", errorMsg='" + errorMsg + '\'' +
-            '}';
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/StrictQueryConsultantParam.java b/pamapi/src/main/java/com/pollex/pam/service/dto/StrictQueryConsultantParam.java
deleted file mode 100644
index 7a7afcf..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/StrictQueryConsultantParam.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.pollex.pam.enums.GenderEnum;
-
-import java.util.List;
-
-public class StrictQueryConsultantParam {
-
-    private GenderEnum gender;
-    private Float avgScore;
-    private String status;
-    private String area;
-    private List<String> requirements;
-    private String otherRequirement;
-    private String seniority;
-    private List<String> popularTags;
-    private String otherPopularTags;
-
-    public GenderEnum getGender() {
-        return gender;
-    }
-
-    public void setGender(GenderEnum gender) {
-        this.gender = gender;
-    }
-
-    public Float getAvgScore() {
-        return avgScore;
-    }
-
-    public void setAvgScore(Float avgScore) {
-        this.avgScore = avgScore;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getArea() {
-        return area;
-    }
-
-    public void setArea(String area) {
-        this.area = area;
-    }
-
-    public List<String> getRequirements() {
-        return requirements;
-    }
-
-    public void setRequirements(List<String> requirements) {
-        this.requirements = requirements;
-    }
-
-    public String getOtherRequirement() {
-        return otherRequirement;
-    }
-
-    public void setOtherRequirement(String otherRequirement) {
-        this.otherRequirement = otherRequirement;
-    }
-
-    public String getSeniority() {
-        return seniority;
-    }
-
-    public void setSeniority(String seniority) {
-        this.seniority = seniority;
-    }
-
-    public List<String> getPopularTags() {
-        return popularTags;
-    }
-
-    public void setPopularTags(List<String> popularTags) {
-        this.popularTags = popularTags;
-    }
-
-    public String getOtherPopularTags() {
-        return otherPopularTags;
-    }
-
-    public void setOtherPopularTags(String otherPopularTags) {
-        this.otherPopularTags = otherPopularTags;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/UserDTO.java b/pamapi/src/main/java/com/pollex/pam/service/dto/UserDTO.java
deleted file mode 100644
index dfcfacc..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/UserDTO.java
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.pollex.pam.service.dto;
-
-import com.pollex.pam.domain.User;
-
-/**
- * A DTO representing a user, with only the public attributes.
- */
-public class UserDTO {
-
-    private Long id;
-
-    private String login;
-
-    public UserDTO() {
-        // Empty constructor needed for Jackson.
-    }
-
-    public UserDTO(User user) {
-        this.id = user.getId();
-        // Customize it here if you need, or not, firstName/lastName/etc
-        this.login = user.getLogin();
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public String getLogin() {
-        return login;
-    }
-
-    public void setLogin(String login) {
-        this.login = login;
-    }
-
-    // prettier-ignore
-    @Override
-    public String toString() {
-        return "UserDTO{" +
-            "id='" + id + '\'' +
-            ", login='" + login + '\'' +
-            "}";
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/dto/package-info.java b/pamapi/src/main/java/com/pollex/pam/service/dto/package-info.java
deleted file mode 100644
index 44834d3..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/dto/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * Data Transfer Objects.
- */
-package com.pollex.pam.service.dto;
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentCustomerViewMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentCustomerViewMapper.java
deleted file mode 100644
index 4389195..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentCustomerViewMapper.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import static java.util.stream.Collectors.toList;
-
-import java.util.List;
-import java.util.Optional;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import com.pollex.pam.domain.AppointmentClosedInfo;
-import com.pollex.pam.domain.AppointmentCustomerView;
-import com.pollex.pam.domain.AppointmentNoticeLog;
-import com.pollex.pam.repository.AppointmentClosedInfoRepository;
-import com.pollex.pam.service.AppointmentClosedInfoService;
-import com.pollex.pam.service.AppointmentNoticeLogService;
-import com.pollex.pam.service.AppointmentService;
-import com.pollex.pam.service.dto.AppointmentCustomerViewDTO;
-
-@Service
-public class AppointmentCustomerViewMapper {
-	
-	@Autowired
-	AppointmentService appointmentService;
-	
-	@Autowired
-	AppointmentNoticeLogService appointmentNoticeLogService;
-	
-	@Autowired
-	AppointmentClosedInfoRepository appointmentClosedInfoRepository;
-	
-	@Transactional
-	public AppointmentCustomerViewDTO toAppointmentCustomerViewDTO(AppointmentCustomerView source) {
-		AppointmentCustomerViewDTO target = new AppointmentCustomerViewDTO();
-		BeanUtils.copyProperties(source, target);
-		target.setAppointmentMemoList(source.getAppointmentMemoList());
-		appointmentService.setInterviewRecordDTO(target);
-		List<AppointmentNoticeLog> noticeLogs = appointmentNoticeLogService.findByAppointmentId(source.getId());
-		target.setAppointmentNoticeLogs(noticeLogs);
-		Optional<AppointmentClosedInfo> appointmentClosedInfoOP = appointmentClosedInfoRepository
-				.findByAppointmentId(source.getId());
-		if(appointmentClosedInfoOP.isPresent()) {
-			target.setAppointmentClosedInfo(appointmentClosedInfoOP.get());
-		}
-		appointmentService.setSatisfactionScore(target, source.getId());
-		
-		return target;
-	}
-
-	public List<AppointmentCustomerViewDTO> toAppointmentCustomerViewDTO(
-			List<AppointmentCustomerView> source) {
-		return source.stream().map(s -> toAppointmentCustomerViewDTO(s))
-				.collect(toList());
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentDTOMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentDTOMapper.java
deleted file mode 100644
index 8a1d6de..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentDTOMapper.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import com.pollex.pam.service.dto.AppointmentDTO;
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.enums.ContactStatusEnum;
-import com.pollex.pam.service.dto.AppointmentCreateDTO;
-
-@Service
-public class AppointmentDTOMapper {
-
-	public Appointment toAppointment(AppointmentCreateDTO source) {
-		Appointment target = new Appointment();
-		BeanUtils.copyProperties(source, target);
-		return target;
-	}
-
-    public Appointment toAppointment(AppointmentDTO source) {
-        Appointment target = new Appointment();
-        BeanUtils.copyProperties(source, target);
-        return target;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentMapper.java
deleted file mode 100644
index 5526738..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentMapper.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import static java.util.stream.Collectors.toList;
-
-import java.util.List;
-
-import com.pollex.pam.enums.SatisfactionTypeEnum;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.Satisfaction;
-import com.pollex.pam.enums.SatisfactionStatusEnum;
-import com.pollex.pam.repository.AppointmentRepository;
-import com.pollex.pam.service.dto.AppointmentDTO;
-
-@Service
-public class AppointmentMapper {
-
-	@Autowired
-	AppointmentRepository appointmentRepository;
-
-	public AppointmentDTO toAppointmentDTO(Appointment source) {
-		AppointmentDTO target = new AppointmentDTO();
-		BeanUtils.copyProperties(source, target);
-		return target;
-	}
-
-	public List<AppointmentDTO> toAppointmentDTO(List<Appointment> source) {
-		return source.stream()
-				.map(s -> toAppointmentDTO(s)).collect(toList());
-	}
-
-	public Satisfaction toAppointmentSatisfaction(Appointment appointment) {
-		Satisfaction target = new Satisfaction();
-        target.setAppointmentId(appointment.getId());
-		target.setAgentNo(appointment.getAgentNo());
-		target.setCustomerId(appointment.getCustomerId());
-        target.setType(SatisfactionTypeEnum.APPOINTMENT);
-		target.setStatus(SatisfactionStatusEnum.UNFILLED);
-		return target;
-	}
-
-	public Satisfaction toAppointmentSatisfaction(Long appointmentId) {
-		Appointment appointment = appointmentRepository.findById(appointmentId).get();
-		return toAppointmentSatisfaction(appointment);
-	}
-
-
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentMemoMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentMemoMapper.java
deleted file mode 100644
index aaae2e9..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentMemoMapper.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
-import com.pollex.pam.domain.AppointmentMemo;
-import com.pollex.pam.service.dto.AppointmentMemoCreateDTO;
-import com.pollex.pam.service.dto.AppointmentMemoUpdateDTO;
-
-@Service
-public class AppointmentMemoMapper {
-	
-	public AppointmentMemo toAppointmentMemo(AppointmentMemoCreateDTO source) {
-		AppointmentMemo target = new AppointmentMemo();
-		BeanUtils.copyProperties(source, target);
-		return target;
-	}
-
-	public AppointmentMemo copyToAppointmentMemo(AppointmentMemoUpdateDTO source, AppointmentMemo target) {
-		BeanUtils.copyProperties(source, target);
-		return target;
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentNoticeSendMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentNoticeSendMapper.java
deleted file mode 100644
index 69a8cb1..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/AppointmentNoticeSendMapper.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
-import com.pollex.pam.domain.AppointmentNoticeLog;
-import com.pollex.pam.service.dto.AppointmentNoticeSendDTO;
-
-@Service
-public class AppointmentNoticeSendMapper {
-	
-	public AppointmentNoticeLog toAppointmentNoticeLog(AppointmentNoticeSendDTO source) {
-		AppointmentNoticeLog target = new AppointmentNoticeLog();
-		BeanUtils.copyProperties(source, target);
-//		target.setAppointmentId(source.getAppointmentId());
-		target.setContent(source.getMessage());
-//		target.setEmail(source.getEmail());
-//		target.setPhone(source.getPhone());
-		return target;
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantDTOMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantDTOMapper.java
deleted file mode 100644
index 48987fc..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantDTOMapper.java
+++ /dev/null
@@ -1,29 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.pollex.pam.config.ApplicationProperties;
-import com.pollex.pam.domain.Consultant;
-import com.pollex.pam.service.dto.ConsultantEditDTO;
-import com.pollex.pam.service.util.FileUtil;
-import com.pollex.pam.service.util.StringUtils;
-
-@Service
-public class ConsultantDTOMapper {
-
-	@Autowired
-    ApplicationProperties applicationProperty;
-
-	public void copyToConsultant(ConsultantEditDTO source, Consultant target) {
-		BeanUtils.copyProperties(source, target);
-		target.setPhotoPath(FileUtil.toPath(source.getPhotoFileName(), applicationProperty.getFileFolderPath()));
-		String expertise = StringUtils.convertToString(source.getExpertise(), ",");
-		target.setExpertise(expertise);
-		target.setAward(source.getAwards());
-		target.setExperience(source.getExperiences());
-	}
-
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java
deleted file mode 100644
index a5f8a21..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/ConsultantMapper.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.Consultant;
-import com.pollex.pam.service.AppointmentService;
-import com.pollex.pam.service.dto.ConsultantDTO;
-import com.pollex.pam.service.dto.ConsultantDetailDTO;
-import com.pollex.pam.service.dto.CustomerFavoriteConsultantDTO;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.time.Instant;
-import java.time.ZonedDateTime;
-import java.util.*;
-import java.util.stream.Collectors;
-
-@Service
-public class ConsultantMapper {
-
-    @Autowired
-    AppointmentService appointmentService;
-
-    private static final Character SPLIT_MASK = ',';
-
-    public CustomerFavoriteConsultantDTO toCustomerFavoriteConsultantDto(Consultant source) {
-        CustomerFavoriteConsultantDTO consultantDTO = new CustomerFavoriteConsultantDTO();
-        consultantDTO.setAgentNo(source.getAgentNo());
-        consultantDTO.setName(source.getName());
-        consultantDTO.setAvgScore(source.getAvgScore());
-        consultantDTO.setSeniority(source.getSeniorityDTOString());
-        consultantDTO.setExpertise(splitStringWithChar(source.getExpertise()));
-        consultantDTO.setImg(source.getPhotoPath());
-        consultantDTO.setRole(source.getRole());
-
-        consultantDTO.setContactStatus(null);
-        consultantDTO.setUpdateTime(null);
-
-        return consultantDTO;
-    }
-
-    public ConsultantDTO toDto(Consultant source) {
-        ConsultantDTO consultantDTO = new ConsultantDTO();
-        consultantDTO.setAgentNo(source.getAgentNo());
-        consultantDTO.setName(source.getName());
-        consultantDTO.setAvgScore(source.getAvgScore());
-        consultantDTO.setSeniority(source.getSeniorityDTOString());
-        consultantDTO.setExpertise(splitStringWithChar(source.getExpertise()));
-        consultantDTO.setImg(source.getPhotoPath());
-        consultantDTO.setRole(source.getRole());
-
-        consultantDTO.setSuitability(0);
-        consultantDTO.setContactStatus(null);
-        consultantDTO.setUpdateTime(null);
-//        consultantDTO.setLatestAppointmentId(null);
-
-        return consultantDTO;
-    }
-
-    public ConsultantDetailDTO toDetailDto(Consultant source) {
-        ConsultantDetailDTO consultantDetailDTO = new ConsultantDetailDTO();
-        BeanUtils.copyProperties(source, consultantDetailDTO);
-        consultantDetailDTO.setName(source.getName());
-        consultantDetailDTO.setAgentNo(source.getAgentNo());
-        consultantDetailDTO.setRole(source.getRole());
-        consultantDetailDTO.setAvgScore(source.getAvgScore());
-        consultantDetailDTO.setTitle(source.getTitle());
-        consultantDetailDTO.setPhoneNumber(source.getPhoneNumber());
-        consultantDetailDTO.setServeArea(source.getServeArea());
-        consultantDetailDTO.setCompanyAddress(source.getCompanyAddress());
-        consultantDetailDTO.setSeniority(source.getSeniorityDTOString());
-        consultantDetailDTO.setConcept(source.getConcept());
-        consultantDetailDTO.setAwards(source.getAward());
-        consultantDetailDTO.setImg(source.getPhotoPath());
-        consultantDetailDTO.setExpertise(splitStringWithChar(source.getExpertise()));
-        consultantDetailDTO.setExperiences(source.getExperience());
-
-        List<Appointment> appointments = appointmentService.findByAgentNo(source.getAgentNo());
-        long allAppointmentCount = appointments.size();
-        long nearlyMonthAppointmentCount = appointments
-            .stream()
-            .filter(appointment -> {
-                Instant oneMonthAgo = ZonedDateTime.now().minusMonths(1).toInstant();
-                return appointment.getAppointmentDate().isAfter(oneMonthAgo);
-            }).count();
-
-        consultantDetailDTO.setAllAppointmentCount(allAppointmentCount);
-        consultantDetailDTO.setNearlyMonthAppointmentCount(nearlyMonthAppointmentCount);
-
-        return consultantDetailDTO;
-    }
-
-    private List<String> splitStringWithChar(String source) {
-        return Arrays.stream(StringUtils.split(source, SPLIT_MASK))
-            .map(String::trim)
-            .collect(Collectors.toList());
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/CustomerDTOMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/CustomerDTOMapper.java
deleted file mode 100644
index 326eac2..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/CustomerDTOMapper.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
-import com.pollex.pam.domain.Customer;
-import com.pollex.pam.service.dto.CustomerRegisterDTO;
-
-@Service
-public class CustomerDTOMapper {
-	
-	public Customer toCustomer(CustomerRegisterDTO source) {
-		Customer target = new Customer();
-		BeanUtils.copyProperties(source, target);
-		return target;
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/CustomerMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/CustomerMapper.java
deleted file mode 100644
index 757d8c9..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/CustomerMapper.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import com.pollex.pam.domain.Customer;
-import com.pollex.pam.service.dto.CustomerDTO;
-import org.springframework.stereotype.Service;
-
-@Service
-public class CustomerMapper {
-
-    public CustomerDTO toDto(Customer customer) {
-        CustomerDTO dto = new CustomerDTO();
-        dto.setEmail(customer.getEmail());
-        dto.setPhone(customer.getPhone());
-        dto.setName(customer.getName());
-
-        return dto;
-    }
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/InterviewRecordMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/InterviewRecordMapper.java
deleted file mode 100644
index d611c2f..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/InterviewRecordMapper.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import static java.util.stream.Collectors.toList;
-
-import java.util.List;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.stereotype.Service;
-
-import com.pollex.pam.domain.InterviewRecord;
-import com.pollex.pam.service.dto.InterviewRecordDTO;
-
-@Service
-public class InterviewRecordMapper {
-
-	public InterviewRecord toInterviewRecord(InterviewRecordDTO source) {
-		InterviewRecord target = new InterviewRecord();
-		BeanUtils.copyProperties(source, target);
-		return target;
-	}
-
-	public void copyToInterviewRecord(InterviewRecordDTO source, InterviewRecord target) {
-		BeanUtils.copyProperties(source, target);
-	}
-
-	public List<InterviewRecordDTO> toInterviewRecordDTO(List<InterviewRecord> records) {
-		return records.stream()
-				.map(s-> toInterviewRecordDTO(s))
-				.collect(toList());
-	}
-	
-	public InterviewRecordDTO toInterviewRecordDTO(InterviewRecord source) {
-		InterviewRecordDTO target = new InterviewRecordDTO();
-		BeanUtils.copyProperties(source, target);
-		return target;
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/SatisfactionDTOMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/SatisfactionDTOMapper.java
deleted file mode 100644
index fe1eaa2..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/SatisfactionDTOMapper.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.pollex.pam.domain.Satisfaction;
-import com.pollex.pam.enums.SatisfactionStatusEnum;
-// import com.pollex.pam.service.dto.SatisfactionCustomerScoreDTO;
-
-@Service
-public class SatisfactionDTOMapper {
-
-	@Autowired
-	AppointmentMapper appointmentMapper;
-
-//	public Satisfaction toSatisfaction(SatisfactionCustomerScoreDTO source) {
-//		Satisfaction satisfaction = appointmentMapper.toAppointmentSatisfaction(source.getAppointmentId());
-//		satisfaction.setScore(source.getScore());
-//		if(satisfaction.getScore()!=null) {
-//			satisfaction.setStatus(SatisfactionStatusEnum.FILLED);
-//		}else {
-//			satisfaction.setStatus(SatisfactionStatusEnum.UNFILLED);
-//		}
-//		return satisfaction;
-//	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/SatisfactionMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/SatisfactionMapper.java
deleted file mode 100644
index 8a757a4..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/SatisfactionMapper.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import static java.util.stream.Collectors.toList;
-
-import java.util.List;
-import java.util.Objects;
-
-import org.springframework.beans.BeanUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import com.pollex.pam.domain.Consultant;
-import com.pollex.pam.domain.Customer;
-import com.pollex.pam.domain.Satisfaction;
-import com.pollex.pam.repository.ConsultantRepository;
-import com.pollex.pam.repository.CustomerRepository;
-import com.pollex.pam.service.dto.SatisfactionDTO;
-
-@Service
-public class SatisfactionMapper {
-
-	@Autowired
-	ConsultantRepository consultantRepository;
-
-	@Autowired
-	CustomerRepository customerRepository;
-
-	public SatisfactionDTO toDTO(Satisfaction source) {
-		SatisfactionDTO target = new SatisfactionDTO();
-		BeanUtils.copyProperties(source, target);
-		target.setScore(source.getScore());
-		Consultant consultant= consultantRepository.findOneByAgentNo(source.getAgentNo()).orElse(null);
-		target.setAgentName(Objects.isNull(consultant) ? null : consultant.getName());
-		Customer customer = customerRepository.findById(source.getCustomerId()).get();
-		target.setCustomerName(customer.getName());
-		return target;
-	}
-
-	public List<SatisfactionDTO> toDTO(List<Satisfaction> satisfactionList) {
-		if(satisfactionList==null) return null;
-		return satisfactionList.stream()
-				.map(s -> toDTO(s))
-				.collect(toList());
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/UserMapper.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/UserMapper.java
deleted file mode 100644
index a5ccf3f..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/UserMapper.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import com.pollex.pam.domain.Authority;
-import com.pollex.pam.domain.User;
-import com.pollex.pam.service.dto.AdminUserDTO;
-import com.pollex.pam.service.dto.UserDTO;
-import java.util.*;
-import java.util.stream.Collectors;
-import org.mapstruct.BeanMapping;
-import org.mapstruct.Mapping;
-import org.mapstruct.Named;
-import org.springframework.stereotype.Service;
-
-/**
- * Mapper for the entity {@link User} and its DTO called {@link UserDTO}.
- *
- * Normal mappers are generated using MapStruct, this one is hand-coded as MapStruct
- * support is still in beta, and requires a manual step with an IDE.
- */
-@Service
-public class UserMapper {
-
-    public List<UserDTO> usersToUserDTOs(List<User> users) {
-        return users.stream().filter(Objects::nonNull).map(this::userToUserDTO).collect(Collectors.toList());
-    }
-
-    public UserDTO userToUserDTO(User user) {
-        return new UserDTO(user);
-    }
-
-    public List<AdminUserDTO> usersToAdminUserDTOs(List<User> users) {
-        return users.stream().filter(Objects::nonNull).map(this::userToAdminUserDTO).collect(Collectors.toList());
-    }
-
-    public AdminUserDTO userToAdminUserDTO(User user) {
-        return new AdminUserDTO(user);
-    }
-
-    public List<User> userDTOsToUsers(List<AdminUserDTO> userDTOs) {
-        return userDTOs.stream().filter(Objects::nonNull).map(this::userDTOToUser).collect(Collectors.toList());
-    }
-
-    public User userDTOToUser(AdminUserDTO userDTO) {
-        if (userDTO == null) {
-            return null;
-        } else {
-            User user = new User();
-            user.setId(userDTO.getId());
-            user.setLogin(userDTO.getLogin());
-            user.setFirstName(userDTO.getFirstName());
-            user.setLastName(userDTO.getLastName());
-            user.setEmail(userDTO.getEmail());
-            user.setImageUrl(userDTO.getImageUrl());
-            user.setActivated(userDTO.isActivated());
-            user.setLangKey(userDTO.getLangKey());
-            Set<Authority> authorities = this.authoritiesFromStrings(userDTO.getAuthorities());
-            user.setAuthorities(authorities);
-            return user;
-        }
-    }
-
-    private Set<Authority> authoritiesFromStrings(Set<String> authoritiesAsString) {
-        Set<Authority> authorities = new HashSet<>();
-
-        if (authoritiesAsString != null) {
-            authorities =
-                authoritiesAsString
-                    .stream()
-                    .map(string -> {
-                        Authority auth = new Authority();
-                        auth.setName(string);
-                        return auth;
-                    })
-                    .collect(Collectors.toSet());
-        }
-
-        return authorities;
-    }
-
-    public User userFromId(Long id) {
-        if (id == null) {
-            return null;
-        }
-        User user = new User();
-        user.setId(id);
-        return user;
-    }
-
-    @Named("id")
-    @BeanMapping(ignoreByDefault = true)
-    @Mapping(target = "id", source = "id")
-    public UserDTO toDtoId(User user) {
-        if (user == null) {
-            return null;
-        }
-        UserDTO userDto = new UserDTO();
-        userDto.setId(user.getId());
-        return userDto;
-    }
-
-    @Named("idSet")
-    @BeanMapping(ignoreByDefault = true)
-    @Mapping(target = "id", source = "id")
-    public Set<UserDTO> toDtoIdSet(Set<User> users) {
-        if (users == null) {
-            return Collections.emptySet();
-        }
-
-        Set<UserDTO> userSet = new HashSet<>();
-        for (User userEntity : users) {
-            userSet.add(this.toDtoId(userEntity));
-        }
-
-        return userSet;
-    }
-
-    @Named("login")
-    @BeanMapping(ignoreByDefault = true)
-    @Mapping(target = "id", source = "id")
-    @Mapping(target = "login", source = "login")
-    public UserDTO toDtoLogin(User user) {
-        if (user == null) {
-            return null;
-        }
-        UserDTO userDto = new UserDTO();
-        userDto.setId(user.getId());
-        userDto.setLogin(user.getLogin());
-        return userDto;
-    }
-
-    @Named("loginSet")
-    @BeanMapping(ignoreByDefault = true)
-    @Mapping(target = "id", source = "id")
-    @Mapping(target = "login", source = "login")
-    public Set<UserDTO> toDtoLoginSet(Set<User> users) {
-        if (users == null) {
-            return Collections.emptySet();
-        }
-
-        Set<UserDTO> userSet = new HashSet<>();
-        for (User userEntity : users) {
-            userSet.add(this.toDtoLogin(userEntity));
-        }
-
-        return userSet;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/mapper/package-info.java b/pamapi/src/main/java/com/pollex/pam/service/mapper/package-info.java
deleted file mode 100644
index b91e8ed..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/mapper/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * MapStruct mappers for mapping domain objects and Data Transfer Objects.
- */
-package com.pollex.pam.service.mapper;
diff --git a/pamapi/src/main/java/com/pollex/pam/service/package-info.java b/pamapi/src/main/java/com/pollex/pam/service/package-info.java
deleted file mode 100644
index ee1f6cf..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * Service layer beans.
- */
-package com.pollex.pam.service;
diff --git a/pamapi/src/main/java/com/pollex/pam/service/util/FileUtil.java b/pamapi/src/main/java/com/pollex/pam/service/util/FileUtil.java
deleted file mode 100644
index dcfdff7..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/util/FileUtil.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package com.pollex.pam.service.util;
-
-
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Base64;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class FileUtil {
-
-	private static final Logger log = LoggerFactory.getLogger(FileUtil.class);
-
-	public static File base64ToFile(String base64, String fileName, String folderPath) {
-		if(base64 == null){
-            return new File(folderPath);
-        }
-        File  dir=new File(folderPath);
-        dir.setWritable(true);
-        dir.setReadable(true);
-        if (!dir.exists() && !dir.isDirectory()) {
-                dir.mkdirs();
-        }
-		return base64ToFile(base64, toPath(fileName, folderPath));
-	}
-	
-	public static File base64ToFile(String base64, String path) {
-		if(base64 == null){
-            return new File(path);
-        }
-
-		BufferedOutputStream bos = null;
-
-        try {
-            byte[] bytes = Base64.getDecoder().decode(base64);
-            File file=new File(path);
-            file.setWritable(true);
-            file.setReadable(true);
-            bos = new BufferedOutputStream(new FileOutputStream(file));
-            bos.write(bytes);
-
-
-            return file;
-        } catch (Exception e) {
-        	log.error("upload file base64 to file error",e);
-        } finally {
-            if (bos != null) {
-                try {
-                    bos.close();
-                } catch (IOException e) {
-                	log.error("upload file base64 to file error",e);
-                }
-            }
-        }
-
-        return null;
-	}
-
-	public static boolean isFileExisted(String fileName, String folderPath) {
-		return new File(toPath(fileName, folderPath)).isFile();
-	}
-	
-	public static String toPath(String fileName, String folderPath) {
-		return folderPath + "/" + fileName;
-	}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java b/pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java
deleted file mode 100644
index 48cc43b..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/util/HttpRequestUtil.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package com.pollex.pam.service.util;
-
-import com.fasterxml.jackson.core.JsonProcessingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.apache.http.conn.ssl.NoopHostnameVerifier;
-import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-import org.apache.http.impl.client.CloseableHttpClient;
-import org.apache.http.impl.client.HttpClients;
-import org.apache.http.ssl.SSLContexts;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.http.*;
-import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
-import org.springframework.web.client.RestTemplate;
-
-import javax.net.ssl.SSLContext;
-import java.security.KeyManagementException;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.X509Certificate;
-import java.util.Map;
-import java.util.Set;
-
-public final class HttpRequestUtil {
-    private static final Logger log = LoggerFactory.getLogger(HttpRequestUtil.class);
-
-    private HttpRequestUtil() {}
-
-    public static <T> ResponseEntity<T> getWithJson(String url, Class<T> responseType)
-        throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException
-    {
-        return getWithJson(url, responseType, null);
-    }
-
-    public static <T> ResponseEntity<T> getWithJson(String url, Class<T> responseType, Map<String, String> addedHeaders)
-        throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException
-    {
-        RestTemplate restTemplate = getTrustAllRestTemplate();
-        HttpHeaders headers = new HttpHeaders();
-        setHeaders(headers, addedHeaders);
-
-        HttpEntity<String> httpEntity = new HttpEntity<>(headers);
-
-        log.debug("HttpRequestUtil get url: {}", url);
-        log.debug("httpEntity = {}", httpEntity);
-        return restTemplate.exchange(url, HttpMethod.GET, httpEntity, responseType);
-    }
-
-    public static ResponseEntity<String> postWithJson(String url, Object jsonData, Map<String, String> headers)
-        throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException
-    {
-        return postWithJson(url, jsonData, String.class, headers);
-    }
-
-    public static ResponseEntity<String> postWithJson(String url, Object jsonData)
-        throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException
-    {
-        return postWithJson(url, jsonData, String.class, null);
-    }
-
-    public static <T> ResponseEntity<T> postWithJson(String url, Object jsonData, Class<T> responseType)
-        throws KeyStoreException, NoSuchAlgorithmException, JsonProcessingException, KeyManagementException
-    {
-        return postWithJson(url, jsonData, responseType, null);
-    }
-
-    public static <T> ResponseEntity<T> postWithJson(String url, Object jsonData, Class<T> responseType, Map<String, String> addedHeaders)
-        throws JsonProcessingException, KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
-
-        String parameters = new ObjectMapper().writeValueAsString(jsonData);
-        // ���摨阡��脰��log����
-        if(parameters.length() < 1000){
-            log.debug("parameters : {}",parameters);
-        }
-
-        RestTemplate restTemplate = getTrustAllRestTemplate();
-
-        HttpHeaders headers = new HttpHeaders();
-        headers.setContentType(MediaType.APPLICATION_JSON);
-        setHeaders(headers, addedHeaders);
-
-        HttpEntity<String> entity = new HttpEntity<>(parameters, headers);
-
-        log.debug("rest post with json, url = {}", url);
-        return restTemplate.exchange(url, HttpMethod.POST, entity, responseType);
-    }
-
-    private static void setHeaders(HttpHeaders headers, Map<String, String> addedHeaders) {
-        if(addedHeaders != null && addedHeaders.size() > 0) {
-            Set<String> keys = addedHeaders.keySet();
-            for (String key : keys) {
-                String headerValue = addedHeaders.get(key);
-                headers.set(key, headerValue);
-                log.info("http cust header key: {}", key);
-                log.info("http cust header headerValue: {}", headerValue);
-            }
-        }
-    }
-
-    private static RestTemplate getTrustAllRestTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
-        SSLContext sslContext = SSLContexts.custom()
-            .loadTrustMaterial(null, (X509Certificate[] x509Certs, String s) -> true)
-            .build();
-        SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext, new NoopHostnameVerifier());
-        CloseableHttpClient httpClient = HttpClients.custom()
-            .setSSLSocketFactory(csf)
-            .build();
-        HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory();
-        requestFactory.setHttpClient(httpClient);
-        requestFactory.setConnectTimeout(300000);
-        requestFactory.setReadTimeout(300000);
-        return new RestTemplate(requestFactory);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/util/StringUtils.java b/pamapi/src/main/java/com/pollex/pam/service/util/StringUtils.java
deleted file mode 100644
index fd2350a..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/util/StringUtils.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.pollex.pam.service.util;
-
-import java.util.List;
-
-public class StringUtils {
-    
-    public static String convertToString(List<String> source
-    		, String separator) {
-        StringBuilder result = new StringBuilder();
-        for (String sourceString : source) {
-        	result.append(sourceString+separator);
-        }
-        result.deleteCharAt(result.length()-1);
-        return result.toString();
-    }
-
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/service/util/VerifyCodeUtil.java b/pamapi/src/main/java/com/pollex/pam/service/util/VerifyCodeUtil.java
deleted file mode 100644
index e42af0b..0000000
--- a/pamapi/src/main/java/com/pollex/pam/service/util/VerifyCodeUtil.java
+++ /dev/null
@@ -1,68 +0,0 @@
-package com.pollex.pam.service.util;
-
-import java.awt.Color;
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.image.BufferedImage;
-import java.util.Random;
-
-public final class VerifyCodeUtil {
-
-	
-	public static String createcode() {
-		String code = "";
-		code = "";
-		String randomRange = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";// Randomly generated character
-																					// range (0-9, a-z, A-Z)
-
-		// The number of digits for generating the verification code (here 4 digits)
-		for (int i = 0; i < 4; i++) {
-			int index = (int) (Math.random() * 62);// Will produce a [0,62) number, excluding decimals
-			char randomCode = randomRange.charAt(index);
-			code = code + randomCode;
-		}
-		return code;
-	}
-
-	// 3. Generate pictures
-	public static BufferedImage createimage(String code) {
-		// The first 2 parameters are: width, height. The back is the image type
-		// Create a BufferedImage object without transparent color, TYPE_INT_ARGB is
-		// with transparent color
-		BufferedImage bi = new BufferedImage(130, 50, BufferedImage.TYPE_INT_RGB);
-
-		// 1. Get a canvas
-		Graphics g = bi.getGraphics();
-		// 2. Add background color
-		g.setColor(Color.WHITE);
-		g.fillRect(0, 0, 130, 50);
-
-		// 3. Add interference lines
-		for (int i = 0; i < 10; i++) {
-			Random r = new Random();
-			int red = r.nextInt(256);
-			int green = r.nextInt(256);
-			int blue = r.nextInt(256);
-			Color c = new Color(red, green, blue);
-			g.setColor(c);
-			int x1 = r.nextInt(131);
-			int y1 = r.nextInt(51);
-			int x2 = r.nextInt(131);
-			int y2 = r.nextInt(51);
-			g.drawLine(x1, y1, x2, y2);// Draw a line
-			// g.drawOval(x1, y1, x2, y2);//Draw a curve
-		}
-
-		// 3. Add text
-		g.setColor(Color.BLACK);
-		g.setFont(new Font(" ", Font.BOLD, 40));
-
-		// 4. Fill the text into the artboard
-		g.drawString(code, 15, 40);
-
-		// 5. Close the canvas
-		g.dispose();
-		return bi;
-	}
-
-}
\ No newline at end of file
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/AccountResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/AccountResource.java
index a4a87ae..a808fcd 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/AccountResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/AccountResource.java
@@ -1,20 +1,16 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.domain.User;
-import com.pollex.pam.repository.UserRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.security.jwt.JWTFilter;
-import com.pollex.pam.service.CustomerAuthService;
+import com.pollex.pam.business.domain.User;
+import com.pollex.pam.business.repository.UserRepository;
+import com.pollex.pam.business.security.SecurityUtils;
 import com.pollex.pam.service.CustomerService;
-import com.pollex.pam.service.MailService;
-import com.pollex.pam.service.UserService;
-import com.pollex.pam.service.dto.AdminUserDTO;
-import com.pollex.pam.service.dto.CustomerRegisterDTO;
-import com.pollex.pam.service.dto.PasswordChangeDTO;
-import com.pollex.pam.web.rest.UserJWTController.JWTToken;
-import com.pollex.pam.web.rest.errors.*;
-import com.pollex.pam.web.rest.vm.KeyAndPasswordVM;
-import com.pollex.pam.web.rest.vm.ManagedUserVM;
+import com.pollex.pam.business.service.MailService;
+import com.pollex.pam.business.service.UserService;
+import com.pollex.pam.business.service.dto.AdminUserDTO;
+import com.pollex.pam.business.service.dto.PasswordChangeDTO;
+import com.pollex.pam.business.web.errors.*;
+import com.pollex.pam.business.web.vm.KeyAndPasswordVM;
+import com.pollex.pam.business.web.vm.ManagedUserVM;
 import java.util.*;
 import javax.servlet.http.HttpServletRequest;
 import javax.validation.Valid;
@@ -22,9 +18,6 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 /**
@@ -48,7 +41,7 @@
     private final UserService userService;
 
     private final MailService mailService;
-    
+
     @Autowired
     CustomerService customerService;
 
@@ -75,8 +68,8 @@
 //        User user = userService.registerUser(managedUserVM, managedUserVM.getPassword());
 //        mailService.sendActivationEmail(user);
 //    }
-    
-    
+
+
 
     /**
      * {@code GET  /activate} : activate the registered user.
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentMemoResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentMemoResource.java
index c7a6afa..5b5ff0f 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentMemoResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentMemoResource.java
@@ -10,36 +10,35 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.pollex.pam.domain.AppointmentMemo;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.AppointmentMemoService;
-import com.pollex.pam.service.dto.AppointmentMemoCreateDTO;
-import com.pollex.pam.service.dto.AppointmentMemoUpdateDTO;
+import com.pollex.pam.business.domain.AppointmentMemo;
+import com.pollex.pam.business.service.AppointmentMemoService;
+import com.pollex.pam.business.service.dto.AppointmentMemoCreateDTO;
+import com.pollex.pam.business.service.dto.AppointmentMemoUpdateDTO;
 
 @RestController
 @RequestMapping("/api/appointment/memo")
 public class AppointmentMemoResource {
-	
+
 	@Autowired
 	AppointmentMemoService appointmentMemoService;
-	
+
 	@PostMapping("/create")
 	public ResponseEntity<AppointmentMemo> createMemo(@RequestBody AppointmentMemoCreateDTO memoDTO) {
 		appointmentMemoService.checkPermission(memoDTO.getAppointmentId());
 		AppointmentMemo memo = appointmentMemoService.create(memoDTO);
 		return new ResponseEntity<>(memo, HttpStatus.OK);
 	}
-	
+
 	@PostMapping("/update")
 	public ResponseEntity<AppointmentMemo> updateMemo(@RequestBody AppointmentMemoUpdateDTO memoDTO) {
 		AppointmentMemo memo = appointmentMemoService.update(memoDTO);
 		return new ResponseEntity<>(memo, HttpStatus.OK);
 	}
-	
+
 	@DeleteMapping("/{memoId}")
 	public void deleteMemo(@PathVariable Long memoId) {
 		appointmentMemoService.delete(memoId);
 	}
-	
-	
+
+
 }
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java
index d1e752e..5164e6a 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/AppointmentResource.java
@@ -1,24 +1,24 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.aop.logging.audit.AuditLoggingInject;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.appointment.process.AppointmentProcess;
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.SendMsgService;
-import com.pollex.pam.service.dto.*;
+import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject;
+import com.pollex.pam.business.aop.logging.audit.AuditLoggingType;
+import com.pollex.pam.business.appointment.process.AppointmentProcess;
+import com.pollex.pam.business.domain.Appointment;
+import com.pollex.pam.business.security.SecurityUtils;
+import com.pollex.pam.business.service.SendMsgService;
 
-import com.pollex.pam.service.mapper.AppointmentMapper;
+import com.pollex.pam.business.service.dto.*;
+import com.pollex.pam.business.service.mapper.AppointmentMapper;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
-import com.pollex.pam.service.AppointmentService;
-import com.pollex.pam.service.PersonalNotificationService;
-import com.pollex.pam.service.SatisfactionService;
+import com.pollex.pam.business.service.AppointmentService;
+import com.pollex.pam.business.service.PersonalNotificationService;
+import com.pollex.pam.business.service.SatisfactionService;
 
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.*;
+import static com.pollex.pam.business.aop.logging.audit.AuditLoggingType.*;
 
 @RestController
 @RequestMapping("/api/appointment")
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantLoginValidateResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantLoginValidateResource.java
index 47b4ffc..c47276d 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantLoginValidateResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantLoginValidateResource.java
@@ -16,12 +16,12 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.pollex.pam.service.util.VerifyCodeUtil;
+import com.pollex.pam.business.service.util.VerifyCodeUtil;
 
 @RestController
 @RequestMapping("/api/login/validate")
 public class ConsultantLoginValidateResource {
-	
+
 	@GetMapping("/get_img_code")
 	public void getVerifyCodeImg(HttpServletResponse response, HttpServletRequest request) {
 		try {
@@ -52,11 +52,11 @@
 				|| !StringUtils.hasText(imgCode)) {
 			return false;
 		}
-		
+
 		if (imgCode.equals(sessionImpCode)) {
 			return true;
 		}
-		
+
 		return false;
 	}
 }
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantResource.java
index 75cdc22..5a3cc86 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/ConsultantResource.java
@@ -1,32 +1,25 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.aop.logging.audit.AuditLoggingInject;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.Consultant;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.AppointmentService;
-import com.pollex.pam.service.ConsultantService;
-import com.pollex.pam.service.dto.*;
+import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject;
+import com.pollex.pam.business.domain.Appointment;
+import com.pollex.pam.business.domain.Consultant;
+import com.pollex.pam.business.security.SecurityUtils;
+import com.pollex.pam.business.service.AppointmentService;
+import com.pollex.pam.business.service.ConsultantService;
+import com.pollex.pam.business.service.dto.*;
 import org.apache.commons.compress.utils.IOUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.ClassPathResource;
-import org.springframework.core.io.Resource;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.MediaType;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
-import java.nio.charset.StandardCharsets;
 import java.util.List;
 
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CONSULTANT_SEND_FILL_SATISFACTION_NOTICE;
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.EDIT_CONSULTANT_DATA;
+import static com.pollex.pam.business.aop.logging.audit.AuditLoggingType.CONSULTANT_SEND_FILL_SATISFACTION_NOTICE;
+import static com.pollex.pam.business.aop.logging.audit.AuditLoggingType.EDIT_CONSULTANT_DATA;
 
 @RestController
 @RequestMapping("/api/consultant")
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/CustomerInfoResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/CustomerInfoResource.java
index 0e3924a..c02f1d5 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/CustomerInfoResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/CustomerInfoResource.java
@@ -1,8 +1,8 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.aop.logging.audit.AuditLoggingInject;
+import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject;
 import com.pollex.pam.service.CustomerService;
-import com.pollex.pam.service.dto.CustomerDTO;
+import com.pollex.pam.business.service.dto.CustomerDTO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
@@ -10,7 +10,7 @@
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.*;
 
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.EDIT_CUSTOMER_DATA;
+import static com.pollex.pam.business.aop.logging.audit.AuditLoggingType.EDIT_CUSTOMER_DATA;
 
 @RestController
 @RequestMapping("/api/customer/info")
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/EServiceResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/EServiceResource.java
index e8ac6f1..c25ca03 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/EServiceResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/EServiceResource.java
@@ -1,11 +1,10 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.aop.logging.audit.AuditLoggingInject;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
+import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject;
 import com.pollex.pam.security.jwt.JWTFilter;
 import com.pollex.pam.security.jwt.TokenProvider;
-import com.pollex.pam.security.token.EServiceAuthenticationToken;
-import com.pollex.pam.web.rest.vm.EServiceLoginVM;
+import com.pollex.pam.business.security.token.EServiceAuthenticationToken;
+import com.pollex.pam.business.web.vm.EServiceLoginVM;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
@@ -18,7 +17,7 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CONSULTANT_LOGIN;
+import static com.pollex.pam.business.aop.logging.audit.AuditLoggingType.CONSULTANT_LOGIN;
 
 @RestController
 @RequestMapping("/api/eService")
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/InterviewRecordResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/InterviewRecordResource.java
index bfb29c3..1aaf45c 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/InterviewRecordResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/InterviewRecordResource.java
@@ -1,7 +1,6 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.aop.logging.audit.AuditLoggingInject;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
+import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.PathVariable;
@@ -10,11 +9,11 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.pollex.pam.domain.InterviewRecord;
-import com.pollex.pam.service.InterviewRecordService;
-import com.pollex.pam.service.dto.InterviewRecordDTO;
+import com.pollex.pam.business.domain.InterviewRecord;
+import com.pollex.pam.business.service.InterviewRecordService;
+import com.pollex.pam.business.service.dto.InterviewRecordDTO;
 
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CONSULTANT_CREATE_INTERVIEW;
+import static com.pollex.pam.business.aop.logging.audit.AuditLoggingType.CONSULTANT_CREATE_INTERVIEW;
 
 @RestController
 @RequestMapping("/api/interview_record")
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/NoticeResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/NoticeResource.java
index c8421ce..1661af0 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/NoticeResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/NoticeResource.java
@@ -1,22 +1,19 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.aop.logging.audit.AuditLoggingInject;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
+import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.pollex.pam.domain.Appointment;
-import com.pollex.pam.domain.AppointmentNoticeLog;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.AppointmentService;
-import com.pollex.pam.service.NoticeService;
-import com.pollex.pam.service.dto.AppointmentNoticeSendDTO;
+import com.pollex.pam.business.domain.Appointment;
+import com.pollex.pam.business.security.SecurityUtils;
+import com.pollex.pam.business.service.AppointmentService;
+import com.pollex.pam.business.service.NoticeService;
+import com.pollex.pam.business.service.dto.AppointmentNoticeSendDTO;
 
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CONSULTANT_SEND_INTERVIEW_NOTICE;
+import static com.pollex.pam.business.aop.logging.audit.AuditLoggingType.CONSULTANT_SEND_INTERVIEW_NOTICE;
 
 @RestController
 @RequestMapping("/api/notice")
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java
index e0cebb7..3cad8c3 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java
@@ -3,7 +3,7 @@
 import java.util.Arrays;
 import java.util.UUID;
 
-import com.pollex.pam.aop.logging.audit.AuditLoggingInject;
+import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -17,22 +17,22 @@
 import org.springframework.web.bind.annotation.RestController;
 
 import com.pollex.pam.config.ApplicationProperties;
-import com.pollex.pam.domain.Customer;
-import com.pollex.pam.enums.OtpLoginTypeEnum;
-import com.pollex.pam.repository.CustomerRepository;
+import com.pollex.pam.business.domain.Customer;
+import com.pollex.pam.business.enums.OtpLoginTypeEnum;
+import com.pollex.pam.business.repository.CustomerRepository;
 import com.pollex.pam.security.jwt.JWTFilter;
 import com.pollex.pam.security.jwt.TokenProvider;
 import com.pollex.pam.service.CustomerAuthService;
 import com.pollex.pam.service.CustomerService;
-import com.pollex.pam.service.OtpTmpService;
+import com.pollex.pam.business.service.OtpTmpService;
 import com.pollex.pam.service.OtpUtilService;
 import com.pollex.pam.service.OtpWebService;
-import com.pollex.pam.service.dto.CustomerRegisterDTO;
-import com.pollex.pam.service.dto.OtpResponseDTO;
-import com.pollex.pam.web.rest.vm.OtpLoginVM;
-import com.pollex.pam.web.rest.vm.VerifyOtpVM;
+import com.pollex.pam.business.service.dto.CustomerRegisterDTO;
+import com.pollex.pam.business.service.dto.OtpResponseDTO;
+import com.pollex.pam.business.web.vm.OtpLoginVM;
+import com.pollex.pam.business.web.vm.VerifyOtpVM;
 
-import static com.pollex.pam.aop.logging.audit.AuditLoggingType.CUSTOMER_LOGIN;
+import static com.pollex.pam.business.aop.logging.audit.AuditLoggingType.CUSTOMER_LOGIN;
 
 @RestController
 @RequestMapping("/api/otp")
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/PersonalNotificationResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/PersonalNotificationResource.java
index ee805b5..9d2b05f 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/PersonalNotificationResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/PersonalNotificationResource.java
@@ -8,34 +8,31 @@
 import org.springframework.http.ResponseEntity;
 import org.springframework.util.StringUtils;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.pollex.pam.domain.Consultant;
-import com.pollex.pam.domain.PersonalNotification;
-import com.pollex.pam.enums.NotificationTypeEnum;
-import com.pollex.pam.enums.PersonalNotificationRoleEnum;
-import com.pollex.pam.repository.PersonalNotificationRepository;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.ConsultantService;
-import com.pollex.pam.service.PersonalNotificationService;
+import com.pollex.pam.business.domain.Consultant;
+import com.pollex.pam.business.domain.PersonalNotification;
+import com.pollex.pam.business.enums.PersonalNotificationRoleEnum;
+import com.pollex.pam.business.repository.PersonalNotificationRepository;
+import com.pollex.pam.business.security.SecurityUtils;
+import com.pollex.pam.business.service.ConsultantService;
+import com.pollex.pam.business.service.PersonalNotificationService;
 
 @RestController
 @RequestMapping("/api/personal_notification")
 public class PersonalNotificationResource {
-	
+
 	@Autowired
 	PersonalNotificationService personalNotificationService;
-	
+
 	@Autowired
 	PersonalNotificationRepository personalNotificationRepository;
-	
+
 	@Autowired
 	ConsultantService consultantService;
-	
+
 	@GetMapping("/getMyPersonalNotification")
 	public ResponseEntity<List<PersonalNotification>> getMyPersonalNotification() {
 		List<PersonalNotification> personalNotificationList = new ArrayList<>();
@@ -47,7 +44,7 @@
 		}
 		return new ResponseEntity<>(personalNotificationList, HttpStatus.OK);
 	}
-	
+
 	@PostMapping("/readAllMyNotification")
 	public void readAll() {
 		personalNotificationService.readAllMyNotification();
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/PublicUserResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/PublicUserResource.java
index 2b07888..be59f4d 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/PublicUserResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/PublicUserResource.java
@@ -1,7 +1,7 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.service.UserService;
-import com.pollex.pam.service.dto.UserDTO;
+import com.pollex.pam.business.service.UserService;
+import com.pollex.pam.business.service.dto.UserDTO;
 import java.util.*;
 import java.util.Collections;
 import org.slf4j.Logger;
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/SatisfactionResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/SatisfactionResource.java
index 82c9afe..d1af1d5 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/SatisfactionResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/SatisfactionResource.java
@@ -2,9 +2,9 @@
 
 import java.util.List;
 
-import com.pollex.pam.aop.logging.audit.AuditLoggingInject;
-import com.pollex.pam.aop.logging.audit.AuditLoggingType;
-import com.pollex.pam.enums.SatisfactionTypeEnum;
+import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject;
+import com.pollex.pam.business.aop.logging.audit.AuditLoggingType;
+import com.pollex.pam.business.enums.SatisfactionTypeEnum;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -15,11 +15,11 @@
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.pollex.pam.domain.Satisfaction;
-import com.pollex.pam.security.SecurityUtils;
-import com.pollex.pam.service.SatisfactionService;
-import com.pollex.pam.service.dto.SatisfactionCustomerScoreDTO;
-import com.pollex.pam.service.dto.SatisfactionDTO;
+import com.pollex.pam.business.domain.Satisfaction;
+import com.pollex.pam.business.security.SecurityUtils;
+import com.pollex.pam.business.service.SatisfactionService;
+import com.pollex.pam.business.service.dto.SatisfactionCustomerScoreDTO;
+import com.pollex.pam.business.service.dto.SatisfactionDTO;
 
 @RestController
 @RequestMapping("/api/satisfaction")
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/TestLoginResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/TestLoginResource.java
index 0487285..8c12c37 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/TestLoginResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/TestLoginResource.java
@@ -3,8 +3,8 @@
 import com.pollex.pam.config.ApplicationProperties;
 import com.pollex.pam.security.jwt.TokenProvider;
 import com.pollex.pam.service.OtpWebService;
-import com.pollex.pam.service.dto.EServiceResponse;
-import com.pollex.pam.service.dto.OtpResponseDTO;
+import com.pollex.pam.business.service.dto.EServiceResponse;
+import com.pollex.pam.business.service.dto.OtpResponseDTO;
 import org.apache.http.conn.ssl.NoopHostnameVerifier;
 import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
 import org.apache.http.impl.client.CloseableHttpClient;
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/TestSendMsgResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/TestSendMsgResource.java
index 8920b48..f001429 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/TestSendMsgResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/TestSendMsgResource.java
@@ -1,12 +1,11 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.service.AppointmentService;
-import com.pollex.pam.service.SendMsgService;
-import com.pollex.pam.service.dto.SendSMSResponse;
+import com.pollex.pam.business.service.AppointmentService;
+import com.pollex.pam.business.service.SendMsgService;
+import com.pollex.pam.business.service.dto.SendSMSResponse;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
-import org.thymeleaf.context.Context;
 import org.thymeleaf.spring5.SpringTemplateEngine;
 
 @Deprecated
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/UserJWTController.java b/pamapi/src/main/java/com/pollex/pam/web/rest/UserJWTController.java
index 4848e08..90c0be8 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/UserJWTController.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/UserJWTController.java
@@ -3,7 +3,7 @@
 import com.fasterxml.jackson.annotation.JsonProperty;
 import com.pollex.pam.security.jwt.JWTFilter;
 import com.pollex.pam.security.jwt.TokenProvider;
-import com.pollex.pam.web.rest.vm.LoginVM;
+import com.pollex.pam.business.web.vm.LoginVM;
 import javax.validation.Valid;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.HttpStatus;
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/UserResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/UserResource.java
index f7b7e17..6c1217b 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/UserResource.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/UserResource.java
@@ -1,15 +1,15 @@
 package com.pollex.pam.web.rest;
 
-import com.pollex.pam.config.Constants;
-import com.pollex.pam.domain.User;
-import com.pollex.pam.repository.UserRepository;
-import com.pollex.pam.security.AuthoritiesConstants;
-import com.pollex.pam.service.MailService;
-import com.pollex.pam.service.UserService;
-import com.pollex.pam.service.dto.AdminUserDTO;
-import com.pollex.pam.web.rest.errors.BadRequestAlertException;
-import com.pollex.pam.web.rest.errors.EmailAlreadyUsedException;
-import com.pollex.pam.web.rest.errors.LoginAlreadyUsedException;
+import com.pollex.pam.business.config.Constants;
+import com.pollex.pam.business.domain.User;
+import com.pollex.pam.business.repository.UserRepository;
+import com.pollex.pam.business.security.AuthoritiesConstants;
+import com.pollex.pam.business.service.MailService;
+import com.pollex.pam.business.service.UserService;
+import com.pollex.pam.business.service.dto.AdminUserDTO;
+import com.pollex.pam.business.web.errors.BadRequestAlertException;
+import com.pollex.pam.business.web.errors.EmailAlreadyUsedException;
+import com.pollex.pam.business.web.errors.LoginAlreadyUsedException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.*;
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/AppointmentClosedInfoNotFoundException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/AppointmentClosedInfoNotFoundException.java
deleted file mode 100644
index e1e00c8..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/AppointmentClosedInfoNotFoundException.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "Appointment close info not found")
-public class AppointmentClosedInfoNotFoundException extends RuntimeException{
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/AppointmentMemoNotFoundException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/AppointmentMemoNotFoundException.java
deleted file mode 100644
index b02f14e..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/AppointmentMemoNotFoundException.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "Appointment memo not found")
-public class AppointmentMemoNotFoundException extends RuntimeException{
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/AppointmentNotFoundException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/AppointmentNotFoundException.java
deleted file mode 100644
index be2eb8b..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/AppointmentNotFoundException.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "Appointment not found")
-public class AppointmentNotFoundException extends RuntimeException{
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/BadRequestAlertException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/BadRequestAlertException.java
deleted file mode 100644
index 5818e55..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/BadRequestAlertException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import java.net.URI;
-import java.util.HashMap;
-import java.util.Map;
-import org.zalando.problem.AbstractThrowableProblem;
-import org.zalando.problem.Status;
-
-public class BadRequestAlertException extends AbstractThrowableProblem {
-
-    private static final long serialVersionUID = 1L;
-
-    private final String entityName;
-
-    private final String errorKey;
-
-    public BadRequestAlertException(String defaultMessage, String entityName, String errorKey) {
-        this(ErrorConstants.DEFAULT_TYPE, defaultMessage, entityName, errorKey);
-    }
-
-    public BadRequestAlertException(URI type, String defaultMessage, String entityName, String errorKey) {
-        super(type, defaultMessage, Status.BAD_REQUEST, null, null, null, getAlertParameters(entityName, errorKey));
-        this.entityName = entityName;
-        this.errorKey = errorKey;
-    }
-
-    public String getEntityName() {
-        return entityName;
-    }
-
-    public String getErrorKey() {
-        return errorKey;
-    }
-
-    private static Map<String, Object> getAlertParameters(String entityName, String errorKey) {
-        Map<String, Object> parameters = new HashMap<>();
-        parameters.put("message", "error." + errorKey);
-        parameters.put("params", entityName);
-        return parameters;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ConsultantDisableException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ConsultantDisableException.java
deleted file mode 100644
index 38afe4e..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ConsultantDisableException.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
-public class ConsultantDisableException extends RuntimeException {
-    public ConsultantDisableException() {
-        super("甇文董����雿輻甇文像�銋���");
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ConsultantNotFoundException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ConsultantNotFoundException.java
deleted file mode 100644
index 517d418..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ConsultantNotFoundException.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "Consultant not found")
-public class ConsultantNotFoundException extends RuntimeException{
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/CustomerNotRegisteredException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/CustomerNotRegisteredException.java
deleted file mode 100644
index 89acfc0..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/CustomerNotRegisteredException.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.FORBIDDEN, reason = "CustomerNotRegistered")
-public class CustomerNotRegisteredException extends RuntimeException{
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/EServiceErrorException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/EServiceErrorException.java
deleted file mode 100644
index ceef292..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/EServiceErrorException.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.UNAUTHORIZED)
-public class EServiceErrorException extends RuntimeException{
-    public EServiceErrorException(String message) {
-        super(message);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/EmailAlreadyUsedException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/EmailAlreadyUsedException.java
deleted file mode 100644
index 8d05d20..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/EmailAlreadyUsedException.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-public class EmailAlreadyUsedException extends BadRequestAlertException {
-
-    private static final long serialVersionUID = 1L;
-
-    public EmailAlreadyUsedException() {
-        super(ErrorConstants.EMAIL_ALREADY_USED_TYPE, "Email is already in use!", "userManagement", "emailexists");
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ErrorConstants.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ErrorConstants.java
deleted file mode 100644
index 49e421c..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ErrorConstants.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import java.net.URI;
-
-public final class ErrorConstants {
-
-    public static final String ERR_CONCURRENCY_FAILURE = "error.concurrencyFailure";
-    public static final String ERR_VALIDATION = "error.validation";
-    public static final String PROBLEM_BASE_URL = "https://www.jhipster.tech/problem";
-    public static final URI DEFAULT_TYPE = URI.create(PROBLEM_BASE_URL + "/problem-with-message");
-    public static final URI CONSTRAINT_VIOLATION_TYPE = URI.create(PROBLEM_BASE_URL + "/constraint-violation");
-    public static final URI INVALID_PASSWORD_TYPE = URI.create(PROBLEM_BASE_URL + "/invalid-password");
-    public static final URI EMAIL_ALREADY_USED_TYPE = URI.create(PROBLEM_BASE_URL + "/email-already-used");
-    public static final URI LOGIN_ALREADY_USED_TYPE = URI.create(PROBLEM_BASE_URL + "/login-already-used");
-
-    private ErrorConstants() {}
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ExceptionTranslator.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ExceptionTranslator.java
index e59e428..5c00cba 100644
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ExceptionTranslator.java
+++ b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/ExceptionTranslator.java
@@ -9,6 +9,9 @@
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import javax.servlet.http.HttpServletRequest;
+
+import com.pollex.pam.business.service.UsernameAlreadyUsedException;
+import com.pollex.pam.business.web.errors.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.core.env.Environment;
@@ -117,7 +120,7 @@
 
     @ExceptionHandler
     public ResponseEntity<Problem> handleEmailAlreadyUsedException(
-        com.pollex.pam.service.EmailAlreadyUsedException ex,
+        com.pollex.pam.business.service.EmailAlreadyUsedException ex,
         NativeWebRequest request
     ) {
         EmailAlreadyUsedException problem = new EmailAlreadyUsedException();
@@ -130,7 +133,7 @@
 
     @ExceptionHandler
     public ResponseEntity<Problem> handleUsernameAlreadyUsedException(
-        com.pollex.pam.service.UsernameAlreadyUsedException ex,
+        UsernameAlreadyUsedException ex,
         NativeWebRequest request
     ) {
         LoginAlreadyUsedException problem = new LoginAlreadyUsedException();
@@ -143,7 +146,7 @@
 
     @ExceptionHandler
     public ResponseEntity<Problem> handleInvalidPasswordException(
-        com.pollex.pam.service.InvalidPasswordException ex,
+        com.pollex.pam.business.service.InvalidPasswordException ex,
         NativeWebRequest request
     ) {
         return create(new InvalidPasswordException(), request);
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/FieldErrorVM.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/FieldErrorVM.java
deleted file mode 100644
index 4028995..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/FieldErrorVM.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import java.io.Serializable;
-
-public class FieldErrorVM implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    private final String objectName;
-
-    private final String field;
-
-    private final String message;
-
-    public FieldErrorVM(String dto, String field, String message) {
-        this.objectName = dto;
-        this.field = field;
-        this.message = message;
-    }
-
-    public String getObjectName() {
-        return objectName;
-    }
-
-    public String getField() {
-        return field;
-    }
-
-    public String getMessage() {
-        return message;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/InterviewRecordNotFoundException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/InterviewRecordNotFoundException.java
deleted file mode 100644
index c3a426d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/InterviewRecordNotFoundException.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "InterviewRecord not found")
-public class InterviewRecordNotFoundException extends RuntimeException{
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/InvalidPasswordException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/InvalidPasswordException.java
deleted file mode 100644
index dd3812f..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/InvalidPasswordException.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.zalando.problem.AbstractThrowableProblem;
-import org.zalando.problem.Status;
-
-public class InvalidPasswordException extends AbstractThrowableProblem {
-
-    private static final long serialVersionUID = 1L;
-
-    public InvalidPasswordException() {
-        super(ErrorConstants.INVALID_PASSWORD_TYPE, "Incorrect password", Status.BAD_REQUEST);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/LoginAlreadyUsedException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/LoginAlreadyUsedException.java
deleted file mode 100644
index aab2f9a..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/LoginAlreadyUsedException.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-public class LoginAlreadyUsedException extends BadRequestAlertException {
-
-    private static final long serialVersionUID = 1L;
-
-    public LoginAlreadyUsedException() {
-        super(ErrorConstants.LOGIN_ALREADY_USED_TYPE, "Login name already used!", "userManagement", "userexists");
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/NotFoundExpiringAppointmentException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/NotFoundExpiringAppointmentException.java
deleted file mode 100644
index a2a02f0..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/NotFoundExpiringAppointmentException.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "not found any expiring appointment")
-public class NotFoundExpiringAppointmentException extends RuntimeException {
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/NotLoginException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/NotLoginException.java
deleted file mode 100644
index 233f1b4..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/NotLoginException.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.UNAUTHORIZED, reason = "Security Context error authentication")
-public class NotLoginException extends RuntimeException{
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/OtpLoginFailException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/OtpLoginFailException.java
deleted file mode 100644
index 65ff04f..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/OtpLoginFailException.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.UNAUTHORIZED)
-public class OtpLoginFailException extends RuntimeException{
-    public OtpLoginFailException(String message) {
-        super(message);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SatisfactionAlreadyExistException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SatisfactionAlreadyExistException.java
deleted file mode 100644
index 013590a..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SatisfactionAlreadyExistException.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR, reason = "Satisfaction already exist")
-public class SatisfactionAlreadyExistException extends RuntimeException{
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SatisfactionNotFoundException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SatisfactionNotFoundException.java
deleted file mode 100644
index e504c34..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SatisfactionNotFoundException.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "Satisfaction not found")
-public class SatisfactionNotFoundException extends RuntimeException{
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendEmailFailException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendEmailFailException.java
deleted file mode 100644
index b43324b..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendEmailFailException.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR, reason = "send email failed")
-public class SendEmailFailException extends RuntimeException {
-    public SendEmailFailException() {}
-    public SendEmailFailException(String message) {
-        super(message);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendSMSFailException.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendSMSFailException.java
deleted file mode 100644
index 0b721ab..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/SendSMSFailException.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.ResponseStatus;
-
-@ResponseStatus(code = HttpStatus.INTERNAL_SERVER_ERROR, reason = "send sms failed")
-public class SendSMSFailException extends RuntimeException{
-    public SendSMSFailException(){}
-    public SendSMSFailException(String message) {
-        super(message);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/package-info.java b/pamapi/src/main/java/com/pollex/pam/web/rest/errors/package-info.java
deleted file mode 100644
index b010ea3..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/errors/package-info.java
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * Specific errors used with Zalando's "problem-spring-web" library.
- *
- * More information on https://github.com/zalando/problem-spring-web
- */
-package com.pollex.pam.web.rest.errors;
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/EServiceLoginVM.java b/pamapi/src/main/java/com/pollex/pam/web/rest/vm/EServiceLoginVM.java
deleted file mode 100644
index 2cebe8e..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/EServiceLoginVM.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.pollex.pam.web.rest.vm;
-
-public class EServiceLoginVM {
-    private String username;
-    private String password;
-
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/KeyAndPasswordVM.java b/pamapi/src/main/java/com/pollex/pam/web/rest/vm/KeyAndPasswordVM.java
deleted file mode 100644
index 7bb8309..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/KeyAndPasswordVM.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.pollex.pam.web.rest.vm;
-
-/**
- * View Model object for storing the user's key and password.
- */
-public class KeyAndPasswordVM {
-
-    private String key;
-
-    private String newPassword;
-
-    public String getKey() {
-        return key;
-    }
-
-    public void setKey(String key) {
-        this.key = key;
-    }
-
-    public String getNewPassword() {
-        return newPassword;
-    }
-
-    public void setNewPassword(String newPassword) {
-        this.newPassword = newPassword;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/LoginVM.java b/pamapi/src/main/java/com/pollex/pam/web/rest/vm/LoginVM.java
deleted file mode 100644
index 97efc36..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/LoginVM.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.pollex.pam.web.rest.vm;
-
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Size;
-
-/**
- * View Model object for storing a user's credentials.
- */
-public class LoginVM {
-
-    @NotNull
-    @Size(min = 1, max = 50)
-    private String username;
-
-    @NotNull
-    @Size(min = 4, max = 100)
-    private String password;
-
-    private boolean rememberMe;
-
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    public boolean isRememberMe() {
-        return rememberMe;
-    }
-
-    public void setRememberMe(boolean rememberMe) {
-        this.rememberMe = rememberMe;
-    }
-
-    // prettier-ignore
-    @Override
-    public String toString() {
-        return "LoginVM{" +
-            "username='" + username + '\'' +
-            ", rememberMe=" + rememberMe +
-            '}';
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/ManagedUserVM.java b/pamapi/src/main/java/com/pollex/pam/web/rest/vm/ManagedUserVM.java
deleted file mode 100644
index 74605b5..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/ManagedUserVM.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.pollex.pam.web.rest.vm;
-
-import com.pollex.pam.service.dto.AdminUserDTO;
-import javax.validation.constraints.Size;
-
-/**
- * View Model extending the AdminUserDTO, which is meant to be used in the user management UI.
- */
-public class ManagedUserVM extends AdminUserDTO {
-
-    public static final int PASSWORD_MIN_LENGTH = 4;
-
-    public static final int PASSWORD_MAX_LENGTH = 100;
-
-    @Size(min = PASSWORD_MIN_LENGTH, max = PASSWORD_MAX_LENGTH)
-    private String password;
-
-    public ManagedUserVM() {
-        // Empty constructor needed for Jackson.
-    }
-
-    public String getPassword() {
-        return password;
-    }
-
-    public void setPassword(String password) {
-        this.password = password;
-    }
-
-    // prettier-ignore
-    @Override
-    public String toString() {
-        return "ManagedUserVM{" + super.toString() + "} ";
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpAccount.java b/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpAccount.java
deleted file mode 100644
index e64bdca..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpAccount.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.pollex.pam.web.rest.vm;
-
-import java.util.Optional;
-
-import org.apache.http.util.Asserts;
-import org.springframework.util.Assert;
-import org.springframework.util.StringUtils;
-
-import com.pollex.pam.domain.Customer;
-
-public class OtpAccount {
-    private String account;
-    private String indexKey;
-
-    public OtpAccount(String account, String indexKey) {
-        this.account = account;
-        this.indexKey = indexKey;
-    }
-
-    public String getAccount() {
-        return account;
-    }
-
-    public void setAccount(String account) {
-        this.account = account;
-    }
-
-    public String getIndexKey() {
-        return indexKey;
-    }
-
-    public void setIndexKey(String indexKey) {
-        this.indexKey = indexKey;
-    }
-    
-    public static OtpAccount createOtpAccount(Customer customerAcct, String indexKey) {
-    	String acct = customerAcct.toAccountString();
-    	
-    	Assert.hasText(acct, "Customer phone or email must not null");
-    	
-    	return new OtpAccount(acct, indexKey);
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpEmailLoginVM.java b/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpEmailLoginVM.java
deleted file mode 100644
index c7a4ef6..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpEmailLoginVM.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.pollex.pam.web.rest.vm;
-
-public class OtpEmailLoginVM {
-    private String email;
-
-    public String getEmail() {
-        return email;
-    }
-
-    public void setEmail(String email) {
-        this.email = email;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpLoginVM.java b/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpLoginVM.java
deleted file mode 100644
index e376624..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpLoginVM.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.pollex.pam.web.rest.vm;
-
-import com.pollex.pam.enums.OtpLoginTypeEnum;
-
-public class OtpLoginVM {
-    private OtpLoginTypeEnum loginType;
-    private String account;
-
-    public OtpLoginTypeEnum getLoginType() {
-        return loginType;
-    }
-
-    public void setLoginType(OtpLoginTypeEnum loginType) {
-        this.loginType = loginType;
-    }
-
-    public String getAccount() {
-        return account;
-    }
-
-    public void setAccount(String account) {
-        this.account = account;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpSMSLoginVM.java b/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpSMSLoginVM.java
deleted file mode 100644
index 830ba8d..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/OtpSMSLoginVM.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package com.pollex.pam.web.rest.vm;
-
-public class OtpSMSLoginVM {
-    private String phone;
-
-    public String getPhone() {
-        return phone;
-    }
-
-    public void setPhone(String phone) {
-        this.phone = phone;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/VerifyOtpVM.java b/pamapi/src/main/java/com/pollex/pam/web/rest/vm/VerifyOtpVM.java
deleted file mode 100644
index 8465eee..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/VerifyOtpVM.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.pollex.pam.web.rest.vm;
-
-public class VerifyOtpVM {
-    private String account;
-    private String indexKey;
-    private String otpCode;
-
-    public String getAccount() {
-        return account;
-    }
-
-    public void setAccount(String account) {
-        this.account = account;
-    }
-
-    public String getIndexKey() {
-        return indexKey;
-    }
-
-    public void setIndexKey(String indexKey) {
-        this.indexKey = indexKey;
-    }
-
-    public String getOtpCode() {
-        return otpCode;
-    }
-
-    public void setOtpCode(String otpCode) {
-        this.otpCode = otpCode;
-    }
-}
diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/package-info.java b/pamapi/src/main/java/com/pollex/pam/web/rest/vm/package-info.java
deleted file mode 100644
index 2a5048e..0000000
--- a/pamapi/src/main/java/com/pollex/pam/web/rest/vm/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * View Models used by Spring MVC REST controllers.
- */
-package com.pollex.pam.web.rest.vm;
diff --git a/pamapi/src/test/java/com/pollex/pam/ArchTest.java b/pamapi/src/test/java/com/pollex/pam/ArchTest.java
index d98c800..47e6326 100644
--- a/pamapi/src/test/java/com/pollex/pam/ArchTest.java
+++ b/pamapi/src/test/java/com/pollex/pam/ArchTest.java
@@ -17,9 +17,9 @@
 
         noClasses()
             .that()
-            .resideInAnyPackage("com.pollex.pam.service..")
+            .resideInAnyPackage("com.pollex.pam.business.service..")
             .or()
-            .resideInAnyPackage("com.pollex.pam.repository..")
+            .resideInAnyPackage("com.pollex.pam.business.repository..")
             .should()
             .dependOnClassesThat()
             .resideInAnyPackage("..com.pollex.pam.web..")
diff --git a/pamapi/src/test/java/com/pollex/pam/config/NoOpMailConfiguration.java b/pamapi/src/test/java/com/pollex/pam/config/NoOpMailConfiguration.java
index cd88e1d..4a556b2 100644
--- a/pamapi/src/test/java/com/pollex/pam/config/NoOpMailConfiguration.java
+++ b/pamapi/src/test/java/com/pollex/pam/config/NoOpMailConfiguration.java
@@ -4,7 +4,7 @@
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.mock;
 
-import com.pollex.pam.service.MailService;
+import com.pollex.pam.business.service.MailService;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
diff --git a/pamapi/src/test/java/com/pollex/pam/config/timezone/HibernateTimeZoneIT.java b/pamapi/src/test/java/com/pollex/pam/config/timezone/HibernateTimeZoneIT.java
deleted file mode 100644
index f0db7f2..0000000
--- a/pamapi/src/test/java/com/pollex/pam/config/timezone/HibernateTimeZoneIT.java
+++ /dev/null
@@ -1,162 +0,0 @@
-package com.pollex.pam.config.timezone;
-
-import static java.lang.String.format;
-import static org.assertj.core.api.Assertions.assertThat;
-
-import com.pollex.pam.IntegrationTest;
-import com.pollex.pam.repository.timezone.DateTimeWrapper;
-import com.pollex.pam.repository.timezone.DateTimeWrapperRepository;
-import java.time.*;
-import java.time.format.DateTimeFormatter;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.jdbc.core.JdbcTemplate;
-import org.springframework.jdbc.support.rowset.SqlRowSet;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * Integration tests for the ZoneId Hibernate configuration.
- */
-@IntegrationTest
-class HibernateTimeZoneIT {
-
-    @Autowired
-    private DateTimeWrapperRepository dateTimeWrapperRepository;
-
-    @Autowired
-    private JdbcTemplate jdbcTemplate;
-
-    @Value("${spring.jpa.properties.hibernate.jdbc.time_zone:UTC}")
-    private String zoneId;
-
-    private DateTimeWrapper dateTimeWrapper;
-    private DateTimeFormatter dateTimeFormatter;
-    private DateTimeFormatter timeFormatter;
-    private DateTimeFormatter dateFormatter;
-
-    @BeforeEach
-    public void setup() {
-        dateTimeWrapper = new DateTimeWrapper();
-        dateTimeWrapper.setInstant(Instant.parse("2014-11-12T05:50:00.0Z"));
-        dateTimeWrapper.setLocalDateTime(LocalDateTime.parse("2014-11-12T07:50:00.0"));
-        dateTimeWrapper.setOffsetDateTime(OffsetDateTime.parse("2011-12-14T08:30:00.0Z"));
-        dateTimeWrapper.setZonedDateTime(ZonedDateTime.parse("2011-12-14T08:30:00.0Z"));
-        dateTimeWrapper.setLocalTime(LocalTime.parse("14:30:00"));
-        dateTimeWrapper.setOffsetTime(OffsetTime.parse("14:30:00+02:00"));
-        dateTimeWrapper.setLocalDate(LocalDate.parse("2016-09-10"));
-
-        dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.S").withZone(ZoneId.of(zoneId));
-
-        timeFormatter = DateTimeFormatter.ofPattern("HH:mm:ss").withZone(ZoneId.of(zoneId));
-
-        dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
-    }
-
-    @Test
-    @Transactional
-    void storeInstantWithZoneIdConfigShouldBeStoredOnGMTTimeZone() {
-        dateTimeWrapperRepository.saveAndFlush(dateTimeWrapper);
-
-        String request = generateSqlRequest("instant", dateTimeWrapper.getId());
-        SqlRowSet resultSet = jdbcTemplate.queryForRowSet(request);
-        String expectedValue = dateTimeFormatter.format(dateTimeWrapper.getInstant());
-
-        assertThatDateStoredValueIsEqualToInsertDateValueOnGMTTimeZone(resultSet, expectedValue);
-    }
-
-    @Test
-    @Transactional
-    void storeLocalDateTimeWithZoneIdConfigShouldBeStoredOnGMTTimeZone() {
-        dateTimeWrapperRepository.saveAndFlush(dateTimeWrapper);
-
-        String request = generateSqlRequest("local_date_time", dateTimeWrapper.getId());
-        SqlRowSet resultSet = jdbcTemplate.queryForRowSet(request);
-        String expectedValue = dateTimeWrapper.getLocalDateTime().atZone(ZoneId.systemDefault()).format(dateTimeFormatter);
-
-        assertThatDateStoredValueIsEqualToInsertDateValueOnGMTTimeZone(resultSet, expectedValue);
-    }
-
-    @Test
-    @Transactional
-    void storeOffsetDateTimeWithZoneIdConfigShouldBeStoredOnGMTTimeZone() {
-        dateTimeWrapperRepository.saveAndFlush(dateTimeWrapper);
-
-        String request = generateSqlRequest("offset_date_time", dateTimeWrapper.getId());
-        SqlRowSet resultSet = jdbcTemplate.queryForRowSet(request);
-        String expectedValue = dateTimeWrapper.getOffsetDateTime().format(dateTimeFormatter);
-
-        assertThatDateStoredValueIsEqualToInsertDateValueOnGMTTimeZone(resultSet, expectedValue);
-    }
-
-    @Test
-    @Transactional
-    void storeZoneDateTimeWithZoneIdConfigShouldBeStoredOnGMTTimeZone() {
-        dateTimeWrapperRepository.saveAndFlush(dateTimeWrapper);
-
-        String request = generateSqlRequest("zoned_date_time", dateTimeWrapper.getId());
-        SqlRowSet resultSet = jdbcTemplate.queryForRowSet(request);
-        String expectedValue = dateTimeWrapper.getZonedDateTime().format(dateTimeFormatter);
-
-        assertThatDateStoredValueIsEqualToInsertDateValueOnGMTTimeZone(resultSet, expectedValue);
-    }
-
-    @Test
-    @Transactional
-    void storeLocalTimeWithZoneIdConfigShouldBeStoredOnGMTTimeZoneAccordingToHis1stJan1970Value() {
-        dateTimeWrapperRepository.saveAndFlush(dateTimeWrapper);
-
-        String request = generateSqlRequest("local_time", dateTimeWrapper.getId());
-        SqlRowSet resultSet = jdbcTemplate.queryForRowSet(request);
-        String expectedValue = dateTimeWrapper
-            .getLocalTime()
-            .atDate(LocalDate.of(1970, Month.JANUARY, 1))
-            .atZone(ZoneId.systemDefault())
-            .format(timeFormatter);
-
-        assertThatDateStoredValueIsEqualToInsertDateValueOnGMTTimeZone(resultSet, expectedValue);
-    }
-
-    @Test
-    @Transactional
-    void storeOffsetTimeWithZoneIdConfigShouldBeStoredOnGMTTimeZoneAccordingToHis1stJan1970Value() {
-        dateTimeWrapperRepository.saveAndFlush(dateTimeWrapper);
-
-        String request = generateSqlRequest("offset_time", dateTimeWrapper.getId());
-        SqlRowSet resultSet = jdbcTemplate.queryForRowSet(request);
-        String expectedValue = dateTimeWrapper
-            .getOffsetTime()
-            .toLocalTime()
-            .atDate(LocalDate.of(1970, Month.JANUARY, 1))
-            .atZone(ZoneId.systemDefault())
-            .format(timeFormatter);
-
-        assertThatDateStoredValueIsEqualToInsertDateValueOnGMTTimeZone(resultSet, expectedValue);
-    }
-
-    @Test
-    @Transactional
-    void storeLocalDateWithZoneIdConfigShouldBeStoredWithoutTransformation() {
-        dateTimeWrapperRepository.saveAndFlush(dateTimeWrapper);
-
-        String request = generateSqlRequest("local_date", dateTimeWrapper.getId());
-        SqlRowSet resultSet = jdbcTemplate.queryForRowSet(request);
-        String expectedValue = dateTimeWrapper.getLocalDate().format(dateFormatter);
-
-        assertThatDateStoredValueIsEqualToInsertDateValueOnGMTTimeZone(resultSet, expectedValue);
-    }
-
-    private String generateSqlRequest(String fieldName, long id) {
-        return format("SELECT %s FROM jhi_date_time_wrapper where id=%d", fieldName, id);
-    }
-
-    private void assertThatDateStoredValueIsEqualToInsertDateValueOnGMTTimeZone(SqlRowSet sqlRowSet, String expectedValue) {
-        while (sqlRowSet.next()) {
-            String dbValue = sqlRowSet.getString(1);
-
-            assertThat(dbValue).isNotNull();
-            assertThat(dbValue).isEqualTo(expectedValue);
-        }
-    }
-}
diff --git a/pamapi/src/test/java/com/pollex/pam/repository/timezone/DateTimeWrapper.java b/pamapi/src/test/java/com/pollex/pam/repository/timezone/DateTimeWrapper.java
deleted file mode 100644
index a6a6684..0000000
--- a/pamapi/src/test/java/com/pollex/pam/repository/timezone/DateTimeWrapper.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package com.pollex.pam.repository.timezone;
-
-import java.io.Serializable;
-import java.time.*;
-import java.util.Objects;
-import javax.persistence.*;
-
-@Entity
-@Table(name = "jhi_date_time_wrapper")
-public class DateTimeWrapper implements Serializable {
-
-    private static final long serialVersionUID = 1L;
-
-    @Id
-    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sequenceGenerator")
-    @SequenceGenerator(name = "sequenceGenerator")
-    private Long id;
-
-    @Column(name = "instant")
-    private Instant instant;
-
-    @Column(name = "local_date_time")
-    private LocalDateTime localDateTime;
-
-    @Column(name = "offset_date_time")
-    private OffsetDateTime offsetDateTime;
-
-    @Column(name = "zoned_date_time")
-    private ZonedDateTime zonedDateTime;
-
-    @Column(name = "local_time")
-    private LocalTime localTime;
-
-    @Column(name = "offset_time")
-    private OffsetTime offsetTime;
-
-    @Column(name = "local_date")
-    private LocalDate localDate;
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Instant getInstant() {
-        return instant;
-    }
-
-    public void setInstant(Instant instant) {
-        this.instant = instant;
-    }
-
-    public LocalDateTime getLocalDateTime() {
-        return localDateTime;
-    }
-
-    public void setLocalDateTime(LocalDateTime localDateTime) {
-        this.localDateTime = localDateTime;
-    }
-
-    public OffsetDateTime getOffsetDateTime() {
-        return offsetDateTime;
-    }
-
-    public void setOffsetDateTime(OffsetDateTime offsetDateTime) {
-        this.offsetDateTime = offsetDateTime;
-    }
-
-    public ZonedDateTime getZonedDateTime() {
-        return zonedDateTime;
-    }
-
-    public void setZonedDateTime(ZonedDateTime zonedDateTime) {
-        this.zonedDateTime = zonedDateTime;
-    }
-
-    public LocalTime getLocalTime() {
-        return localTime;
-    }
-
-    public void setLocalTime(LocalTime localTime) {
-        this.localTime = localTime;
-    }
-
-    public OffsetTime getOffsetTime() {
-        return offsetTime;
-    }
-
-    public void setOffsetTime(OffsetTime offsetTime) {
-        this.offsetTime = offsetTime;
-    }
-
-    public LocalDate getLocalDate() {
-        return localDate;
-    }
-
-    public void setLocalDate(LocalDate localDate) {
-        this.localDate = localDate;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-
-        DateTimeWrapper dateTimeWrapper = (DateTimeWrapper) o;
-        return !(dateTimeWrapper.getId() == null || getId() == null) && Objects.equals(getId(), dateTimeWrapper.getId());
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hashCode(getId());
-    }
-
-    // prettier-ignore
-    @Override
-    public String toString() {
-        return "TimeZoneTest{" +
-            "id=" + id +
-            ", instant=" + instant +
-            ", localDateTime=" + localDateTime +
-            ", offsetDateTime=" + offsetDateTime +
-            ", zonedDateTime=" + zonedDateTime +
-            '}';
-    }
-}
diff --git a/pamapi/src/test/java/com/pollex/pam/repository/timezone/DateTimeWrapperRepository.java b/pamapi/src/test/java/com/pollex/pam/repository/timezone/DateTimeWrapperRepository.java
deleted file mode 100644
index 2907925..0000000
--- a/pamapi/src/test/java/com/pollex/pam/repository/timezone/DateTimeWrapperRepository.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.pollex.pam.repository.timezone;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-/**
- * Spring Data JPA repository for the {@link DateTimeWrapper} entity.
- */
-@Repository
-public interface DateTimeWrapperRepository extends JpaRepository<DateTimeWrapper, Long> {}
diff --git a/pamapi/src/test/java/com/pollex/pam/security/DomainUserDetailsServiceIT.java b/pamapi/src/test/java/com/pollex/pam/security/DomainUserDetailsServiceIT.java
deleted file mode 100644
index bba00aa..0000000
--- a/pamapi/src/test/java/com/pollex/pam/security/DomainUserDetailsServiceIT.java
+++ /dev/null
@@ -1,111 +0,0 @@
-package com.pollex.pam.security;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-
-import com.pollex.pam.IntegrationTest;
-import com.pollex.pam.domain.User;
-import com.pollex.pam.repository.UserRepository;
-import java.util.Locale;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.transaction.annotation.Transactional;
-
-/**
- * Integrations tests for {@link DomainUserDetailsService}.
- */
-@Transactional
-@IntegrationTest
-class DomainUserDetailsServiceIT {
-
-    private static final String USER_ONE_LOGIN = "test-user-one";
-    private static final String USER_ONE_EMAIL = "test-user-one@localhost";
-    private static final String USER_TWO_LOGIN = "test-user-two";
-    private static final String USER_TWO_EMAIL = "test-user-two@localhost";
-    private static final String USER_THREE_LOGIN = "test-user-three";
-    private static final String USER_THREE_EMAIL = "test-user-three@localhost";
-
-    @Autowired
-    private UserRepository userRepository;
-
-    @Autowired
-    private UserDetailsService domainUserDetailsService;
-
-    @BeforeEach
-    public void init() {
-        User userOne = new User();
-        userOne.setLogin(USER_ONE_LOGIN);
-        userOne.setPassword(RandomStringUtils.random(60));
-        userOne.setActivated(true);
-        userOne.setEmail(USER_ONE_EMAIL);
-        userOne.setFirstName("userOne");
-        userOne.setLastName("doe");
-        userOne.setLangKey("en");
-        userRepository.save(userOne);
-
-        User userTwo = new User();
-        userTwo.setLogin(USER_TWO_LOGIN);
-        userTwo.setPassword(RandomStringUtils.random(60));
-        userTwo.setActivated(true);
-        userTwo.setEmail(USER_TWO_EMAIL);
-        userTwo.setFirstName("userTwo");
-        userTwo.setLastName("doe");
-        userTwo.setLangKey("en");
-        userRepository.save(userTwo);
-
-        User userThree = new User();
-        userThree.setLogin(USER_THREE_LOGIN);
-        userThree.setPassword(RandomStringUtils.random(60));
-        userThree.setActivated(false);
-        userThree.setEmail(USER_THREE_EMAIL);
-        userThree.setFirstName("userThree");
-        userThree.setLastName("doe");
-        userThree.setLangKey("en");
-        userRepository.save(userThree);
-    }
-
-    @Test
-    void assertThatUserCanBeFoundByLogin() {
-        UserDetails userDetails = domainUserDetailsService.loadUserByUsername(USER_ONE_LOGIN);
-        assertThat(userDetails).isNotNull();
-        assertThat(userDetails.getUsername()).isEqualTo(USER_ONE_LOGIN);
-    }
-
-    @Test
-    void assertThatUserCanBeFoundByLoginIgnoreCase() {
-        UserDetails userDetails = domainUserDetailsService.loadUserByUsername(USER_ONE_LOGIN.toUpperCase(Locale.ENGLISH));
-        assertThat(userDetails).isNotNull();
-        assertThat(userDetails.getUsername()).isEqualTo(USER_ONE_LOGIN);
-    }
-
-    @Test
-    void assertThatUserCanBeFoundByEmail() {
-        UserDetails userDetails = domainUserDetailsService.loadUserByUsername(USER_TWO_EMAIL);
-        assertThat(userDetails).isNotNull();
-        assertThat(userDetails.getUsername()).isEqualTo(USER_TWO_LOGIN);
-    }
-
-    @Test
-    void assertThatUserCanBeFoundByEmailIgnoreCase() {
-        UserDetails userDetails = domainUserDetailsService.loadUserByUsername(USER_TWO_EMAIL.toUpperCase(Locale.ENGLISH));
-        assertThat(userDetails).isNotNull();
-        assertThat(userDetails.getUsername()).isEqualTo(USER_TWO_LOGIN);
-    }
-
-    @Test
-    void assertThatEmailIsPrioritizedOverLogin() {
-        UserDetails userDetails = domainUserDetailsService.loadUserByUsername(USER_ONE_EMAIL);
-        assertThat(userDetails).isNotNull();
-        assertThat(userDetails.getUsername()).isEqualTo(USER_ONE_LOGIN);
-    }
-
-    @Test
-    void assertThatUserNotActivatedExceptionIsThrownForNotActivatedUsers() {
-        assertThatExceptionOfType(UserNotActivatedException.class)
-            .isThrownBy(() -> domainUserDetailsService.loadUserByUsername(USER_THREE_LOGIN));
-    }
-}
diff --git a/pamapi/src/test/java/com/pollex/pam/security/SecurityUtilsUnitTest.java b/pamapi/src/test/java/com/pollex/pam/security/SecurityUtilsUnitTest.java
deleted file mode 100644
index 202c393..0000000
--- a/pamapi/src/test/java/com/pollex/pam/security/SecurityUtilsUnitTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.pollex.pam.security;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Optional;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
-
-/**
- * Test class for the {@link SecurityUtils} utility class.
- */
-class SecurityUtilsUnitTest {
-
-    @BeforeEach
-    @AfterEach
-    void cleanup() {
-        SecurityContextHolder.clearContext();
-    }
-
-    @Test
-    void testGetCurrentUserLogin() {
-        SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
-        securityContext.setAuthentication(new UsernamePasswordAuthenticationToken("admin", "admin"));
-        SecurityContextHolder.setContext(securityContext);
-        Optional<String> login = SecurityUtils.getCurrentUserLogin();
-        assertThat(login).contains("admin");
-    }
-
-    @Test
-    void testGetCurrentUserJWT() {
-        SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
-        securityContext.setAuthentication(new UsernamePasswordAuthenticationToken("admin", "token"));
-        SecurityContextHolder.setContext(securityContext);
-        Optional<String> jwt = SecurityUtils.getCurrentUserJWT();
-        assertThat(jwt).contains("token");
-    }
-
-    @Test
-    void testIsAuthenticated() {
-        SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
-        securityContext.setAuthentication(new UsernamePasswordAuthenticationToken("admin", "admin"));
-        SecurityContextHolder.setContext(securityContext);
-        boolean isAuthenticated = SecurityUtils.isAuthenticated();
-        assertThat(isAuthenticated).isTrue();
-    }
-
-    @Test
-    void testAnonymousIsNotAuthenticated() {
-        SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
-        Collection<GrantedAuthority> authorities = new ArrayList<>();
-        authorities.add(new SimpleGrantedAuthority(AuthoritiesConstants.ANONYMOUS));
-        securityContext.setAuthentication(new UsernamePasswordAuthenticationToken("anonymous", "anonymous", authorities));
-        SecurityContextHolder.setContext(securityContext);
-        boolean isAuthenticated = SecurityUtils.isAuthenticated();
-        assertThat(isAuthenticated).isFalse();
-    }
-
-    @Test
-    void testHasCurrentUserThisAuthority() {
-        SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
-        Collection<GrantedAuthority> authorities = new ArrayList<>();
-        authorities.add(new SimpleGrantedAuthority(AuthoritiesConstants.USER));
-        securityContext.setAuthentication(new UsernamePasswordAuthenticationToken("user", "user", authorities));
-        SecurityContextHolder.setContext(securityContext);
-
-        assertThat(SecurityUtils.hasCurrentUserThisAuthority(AuthoritiesConstants.USER)).isTrue();
-        assertThat(SecurityUtils.hasCurrentUserThisAuthority(AuthoritiesConstants.ADMIN)).isFalse();
-    }
-
-    @Test
-    void testHasCurrentUserAnyOfAuthorities() {
-        SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
-        Collection<GrantedAuthority> authorities = new ArrayList<>();
-        authorities.add(new SimpleGrantedAuthority(AuthoritiesConstants.USER));
-        securityContext.setAuthentication(new UsernamePasswordAuthenticationToken("user", "user", authorities));
-        SecurityContextHolder.setContext(securityContext);
-
-        assertThat(SecurityUtils.hasCurrentUserAnyOfAuthorities(AuthoritiesConstants.USER, AuthoritiesConstants.ADMIN)).isTrue();
-        assertThat(SecurityUtils.hasCurrentUserAnyOfAuthorities(AuthoritiesConstants.ANONYMOUS, AuthoritiesConstants.ADMIN)).isFalse();
-    }
-
-    @Test
-    void testHasCurrentUserNoneOfAuthorities() {
-        SecurityContext securityContext = SecurityContextHolder.createEmptyContext();
-        Collection<GrantedAuthority> authorities = new ArrayList<>();
-        authorities.add(new SimpleGrantedAuthority(AuthoritiesConstants.USER));
-        securityContext.setAuthentication(new UsernamePasswordAuthenticationToken("user", "user", authorities));
-        SecurityContextHolder.setContext(securityContext);
-
-        assertThat(SecurityUtils.hasCurrentUserNoneOfAuthorities(AuthoritiesConstants.USER, AuthoritiesConstants.ADMIN)).isFalse();
-        assertThat(SecurityUtils.hasCurrentUserNoneOfAuthorities(AuthoritiesConstants.ANONYMOUS, AuthoritiesConstants.ADMIN)).isTrue();
-    }
-}
diff --git a/pamapi/src/test/java/com/pollex/pam/security/jwt/JWTFilterTest.java b/pamapi/src/test/java/com/pollex/pam/security/jwt/JWTFilterTest.java
deleted file mode 100644
index d459104..0000000
--- a/pamapi/src/test/java/com/pollex/pam/security/jwt/JWTFilterTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.pollex.pam.security.jwt;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import com.pollex.pam.security.AuthoritiesConstants;
-import io.jsonwebtoken.io.Decoders;
-import io.jsonwebtoken.security.Keys;
-import java.util.Collections;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.springframework.http.HttpStatus;
-import org.springframework.mock.web.MockFilterChain;
-import org.springframework.mock.web.MockHttpServletRequest;
-import org.springframework.mock.web.MockHttpServletResponse;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.test.util.ReflectionTestUtils;
-import tech.jhipster.config.JHipsterProperties;
-
-class JWTFilterTest {
-
-    private TokenProvider tokenProvider;
-
-    private JWTFilter jwtFilter;
-
-    @BeforeEach
-    public void setup() {
-        JHipsterProperties jHipsterProperties = new JHipsterProperties();
-        String base64Secret = "fd54a45s65fds737b9aafcb3412e07ed99b267f33413274720ddbb7f6c5e64e9f14075f2d7ed041592f0b7657baf8";
-        jHipsterProperties.getSecurity().getAuthentication().getJwt().setBase64Secret(base64Secret);
-        tokenProvider = new TokenProvider(jHipsterProperties);
-        ReflectionTestUtils.setField(tokenProvider, "key", Keys.hmacShaKeyFor(Decoders.BASE64.decode(base64Secret)));
-
-        ReflectionTestUtils.setField(tokenProvider, "tokenValidityInMilliseconds", 60000);
-        jwtFilter = new JWTFilter(tokenProvider);
-        SecurityContextHolder.getContext().setAuthentication(null);
-    }
-
-    @Test
-    void testJWTFilter() throws Exception {
-        UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
-            "test-user",
-            "test-password",
-            Collections.singletonList(new SimpleGrantedAuthority(AuthoritiesConstants.USER))
-        );
-        String jwt = tokenProvider.createToken(authentication, false);
-        MockHttpServletRequest request = new MockHttpServletRequest();
-        request.addHeader(JWTFilter.AUTHORIZATION_HEADER, "Bearer " + jwt);
-        request.setRequestURI("/api/test");
-        MockHttpServletResponse response = new MockHttpServletResponse();
-        MockFilterChain filterChain = new MockFilterChain();
-        jwtFilter.doFilter(request, response, filterChain);
-        assertThat(response.getStatus()).isEqualTo(HttpStatus.OK.value());
-        assertThat(SecurityContextHolder.getContext().getAuthentication().getName()).isEqualTo("test-user");
-        assertThat(SecurityContextHolder.getContext().getAuthentication().getCredentials()).hasToString(jwt);
-    }
-
-    @Test
-    void testJWTFilterInvalidToken() throws Exception {
-        String jwt = "wrong_jwt";
-        MockHttpServletRequest request = new MockHttpServletRequest();
-        request.addHeader(JWTFilter.AUTHORIZATION_HEADER, "Bearer " + jwt);
-        request.setRequestURI("/api/test");
-        MockHttpServletResponse response = new MockHttpServletResponse();
-        MockFilterChain filterChain = new MockFilterChain();
-        jwtFilter.doFilter(request, response, filterChain);
-        assertThat(response.getStatus()).isEqualTo(HttpStatus.OK.value());
-        assertThat(SecurityContextHolder.getContext().getAuthentication()).isNull();
-    }
-
-    @Test
-    void testJWTFilterMissingAuthorization() throws Exception {
-        MockHttpServletRequest request = new MockHttpServletRequest();
-        request.setRequestURI("/api/test");
-        MockHttpServletResponse response = new MockHttpServletResponse();
-        MockFilterChain filterChain = new MockFilterChain();
-        jwtFilter.doFilter(request, response, filterChain);
-        assertThat(response.getStatus()).isEqualTo(HttpStatus.OK.value());
-        assertThat(SecurityContextHolder.getContext().getAuthentication()).isNull();
-    }
-
-    @Test
-    void testJWTFilterMissingToken() throws Exception {
-        MockHttpServletRequest request = new MockHttpServletRequest();
-        request.addHeader(JWTFilter.AUTHORIZATION_HEADER, "Bearer ");
-        request.setRequestURI("/api/test");
-        MockHttpServletResponse response = new MockHttpServletResponse();
-        MockFilterChain filterChain = new MockFilterChain();
-        jwtFilter.doFilter(request, response, filterChain);
-        assertThat(response.getStatus()).isEqualTo(HttpStatus.OK.value());
-        assertThat(SecurityContextHolder.getContext().getAuthentication()).isNull();
-    }
-
-    @Test
-    void testJWTFilterWrongScheme() throws Exception {
-        UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(
-            "test-user",
-            "test-password",
-            Collections.singletonList(new SimpleGrantedAuthority(AuthoritiesConstants.USER))
-        );
-        String jwt = tokenProvider.createToken(authentication, false);
-        MockHttpServletRequest request = new MockHttpServletRequest();
-        request.addHeader(JWTFilter.AUTHORIZATION_HEADER, "Basic " + jwt);
-        request.setRequestURI("/api/test");
-        MockHttpServletResponse response = new MockHttpServletResponse();
-        MockFilterChain filterChain = new MockFilterChain();
-        jwtFilter.doFilter(request, response, filterChain);
-        assertThat(response.getStatus()).isEqualTo(HttpStatus.OK.value());
-        assertThat(SecurityContextHolder.getContext().getAuthentication()).isNull();
-    }
-}
diff --git a/pamapi/src/test/java/com/pollex/pam/security/jwt/TokenProviderTest.java b/pamapi/src/test/java/com/pollex/pam/security/jwt/TokenProviderTest.java
deleted file mode 100644
index 7dc9027..0000000
--- a/pamapi/src/test/java/com/pollex/pam/security/jwt/TokenProviderTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.pollex.pam.security.jwt;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import com.pollex.pam.security.AuthoritiesConstants;
-import io.jsonwebtoken.Jwts;
-import io.jsonwebtoken.SignatureAlgorithm;
-import io.jsonwebtoken.io.Decoders;
-import io.jsonwebtoken.security.Keys;
-import java.nio.charset.StandardCharsets;
-import java.security.Key;
-import java.util.*;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.test.util.ReflectionTestUtils;
-import tech.jhipster.config.JHipsterProperties;
-
-class TokenProviderTest {
-
-    private static final long ONE_MINUTE = 60000;
-
-    private Key key;
-    private TokenProvider tokenProvider;
-
-    @BeforeEach
-    public void setup() {
-        JHipsterProperties jHipsterProperties = new JHipsterProperties();
-        String base64Secret = "fd54a45s65fds737b9aafcb3412e07ed99b267f33413274720ddbb7f6c5e64e9f14075f2d7ed041592f0b7657baf8";
-        jHipsterProperties.getSecurity().getAuthentication().getJwt().setBase64Secret(base64Secret);
-        tokenProvider = new TokenProvider(jHipsterProperties);
-        key = Keys.hmacShaKeyFor(Decoders.BASE64.decode(base64Secret));
-
-        ReflectionTestUtils.setField(tokenProvider, "key", key);
-        ReflectionTestUtils.setField(tokenProvider, "tokenValidityInMilliseconds", ONE_MINUTE);
-    }
-
-    @Test
-    void testReturnFalseWhenJWThasInvalidSignature() {
-        boolean isTokenValid = tokenProvider.validateToken(createTokenWithDifferentSignature());
-
-        assertThat(isTokenValid).isFalse();
-    }
-
-    @Test
-    void testReturnFalseWhenJWTisMalformed() {
-        Authentication authentication = createAuthentication();
-        String token = tokenProvider.createToken(authentication, false);
-        String invalidToken = token.substring(1);
-        boolean isTokenValid = tokenProvider.validateToken(invalidToken);
-
-        assertThat(isTokenValid).isFalse();
-    }
-
-    @Test
-    void testReturnFalseWhenJWTisExpired() {
-        ReflectionTestUtils.setField(tokenProvider, "tokenValidityInMilliseconds", -ONE_MINUTE);
-
-        Authentication authentication = createAuthentication();
-        String token = tokenProvider.createToken(authentication, false);
-
-        boolean isTokenValid = tokenProvider.validateToken(token);
-
-        assertThat(isTokenValid).isFalse();
-    }
-
-    @Test
-    void testReturnFalseWhenJWTisUnsupported() {
-        String unsupportedToken = createUnsupportedToken();
-
-        boolean isTokenValid = tokenProvider.validateToken(unsupportedToken);
-
-        assertThat(isTokenValid).isFalse();
-    }
-
-    @Test
-    void testReturnFalseWhenJWTisInvalid() {
-        boolean isTokenValid = tokenProvider.validateToken("");
-
-        assertThat(isTokenValid).isFalse();
-    }
-
-    @Test
-    void testKeyIsSetFromSecretWhenSecretIsNotEmpty() {
-        final String secret = "NwskoUmKHZtzGRKJKVjsJF7BtQMMxNWi";
-        JHipsterProperties jHipsterProperties = new JHipsterProperties();
-        jHipsterProperties.getSecurity().getAuthentication().getJwt().setSecret(secret);
-
-        TokenProvider tokenProvider = new TokenProvider(jHipsterProperties);
-
-        Key key = (Key) ReflectionTestUtils.getField(tokenProvider, "key");
-        assertThat(key).isNotNull().isEqualTo(Keys.hmacShaKeyFor(secret.getBytes(StandardCharsets.UTF_8)));
-    }
-
-    @Test
-    void testKeyIsSetFromBase64SecretWhenSecretIsEmpty() {
-        final String base64Secret = "fd54a45s65fds737b9aafcb3412e07ed99b267f33413274720ddbb7f6c5e64e9f14075f2d7ed041592f0b7657baf8";
-        JHipsterProperties jHipsterProperties = new JHipsterProperties();
-        jHipsterProperties.getSecurity().getAuthentication().getJwt().setBase64Secret(base64Secret);
-
-        TokenProvider tokenProvider = new TokenProvider(jHipsterProperties);
-
-        Key key = (Key) ReflectionTestUtils.getField(tokenProvider, "key");
-        assertThat(key).isNotNull().isEqualTo(Keys.hmacShaKeyFor(Decoders.BASE64.decode(base64Secret)));
-    }
-
-    private Authentication createAuthentication() {
-        Collection<GrantedAuthority> authorities = new ArrayList<>();
-        authorities.add(new SimpleGrantedAuthority(AuthoritiesConstants.ANONYMOUS));
-        return new UsernamePasswordAuthenticationToken("anonymous", "anonymous", authorities);
-    }
-
-    private String createUnsupportedToken() {
-        return Jwts.builder().setPayload("payload").signWith(key, SignatureAlgorithm.HS512).compact();
-    }
-
-    private String createTokenWithDifferentSignature() {
-        Key otherKey = Keys.hmacShaKeyFor(
-            Decoders.BASE64.decode("Xfd54a45s65fds737b9aafcb3412e07ed99b267f33413274720ddbb7f6c5e64e9f14075f2d7ed041592f0b7657baf8")
-        );
-
-        return Jwts
-            .builder()
-            .setSubject("anonymous")
-            .signWith(otherKey, SignatureAlgorithm.HS512)
-            .setExpiration(new Date(new Date().getTime() + ONE_MINUTE))
-            .compact();
-    }
-}
diff --git a/pamapi/src/test/java/com/pollex/pam/service/MailServiceIT.java b/pamapi/src/test/java/com/pollex/pam/service/MailServiceIT.java
deleted file mode 100644
index 1b0b967..0000000
--- a/pamapi/src/test/java/com/pollex/pam/service/MailServiceIT.java
+++ /dev/null
@@ -1,245 +0,0 @@
-package com.pollex.pam.service;
-
-import static org.assertj.core.api.Assertions.*;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.Mockito.*;
-
-import com.pollex.pam.IntegrationTest;
-import com.pollex.pam.config.Constants;
-import com.pollex.pam.domain.User;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-import java.net.URI;
-import java.net.URL;
-import java.nio.charset.Charset;
-import java.util.Properties;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import javax.mail.Multipart;
-import javax.mail.internet.MimeBodyPart;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.MimeMultipart;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.mockito.ArgumentCaptor;
-import org.mockito.Captor;
-import org.mockito.MockitoAnnotations;
-import org.mockito.Spy;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.context.MessageSource;
-import org.springframework.mail.MailSendException;
-import org.springframework.mail.javamail.JavaMailSenderImpl;
-import org.thymeleaf.spring5.SpringTemplateEngine;
-import tech.jhipster.config.JHipsterProperties;
-
-/**
- * Integration tests for {@link MailService}.
- */
-@IntegrationTest
-class MailServiceIT {
-
-    private static final String[] languages = {
-        "zh-tw",
-        "en",
-        // jhipster-needle-i18n-language-constant - JHipster will add/remove languages in this array
-    };
-    private static final Pattern PATTERN_LOCALE_3 = Pattern.compile("([a-z]{2})-([a-zA-Z]{4})-([a-z]{2})");
-    private static final Pattern PATTERN_LOCALE_2 = Pattern.compile("([a-z]{2})-([a-z]{2})");
-
-    @Autowired
-    private JHipsterProperties jHipsterProperties;
-
-    @Autowired
-    private MessageSource messageSource;
-
-    @Autowired
-    private SpringTemplateEngine templateEngine;
-
-    @Spy
-    private JavaMailSenderImpl javaMailSender;
-
-    @Captor
-    private ArgumentCaptor<MimeMessage> messageCaptor;
-
-    private MailService mailService;
-
-    @BeforeEach
-    public void setup() {
-        MockitoAnnotations.initMocks(this);
-        doNothing().when(javaMailSender).send(any(MimeMessage.class));
-        mailService = new MailService(jHipsterProperties, javaMailSender, messageSource, templateEngine);
-    }
-
-    @Test
-    void testSendEmail() throws Exception {
-        mailService.sendEmail("john.doe@example.com", "testSubject", "testContent", false, false);
-        verify(javaMailSender).send(messageCaptor.capture());
-        MimeMessage message = messageCaptor.getValue();
-        assertThat(message.getSubject()).isEqualTo("testSubject");
-        assertThat(message.getAllRecipients()[0]).hasToString("john.doe@example.com");
-        assertThat(message.getFrom()[0]).hasToString(jHipsterProperties.getMail().getFrom());
-        assertThat(message.getContent()).isInstanceOf(String.class);
-        assertThat(message.getContent()).hasToString("testContent");
-        assertThat(message.getDataHandler().getContentType()).isEqualTo("text/plain; charset=UTF-8");
-    }
-
-    @Test
-    void testSendHtmlEmail() throws Exception {
-        mailService.sendEmail("john.doe@example.com", "testSubject", "testContent", false, true);
-        verify(javaMailSender).send(messageCaptor.capture());
-        MimeMessage message = messageCaptor.getValue();
-        assertThat(message.getSubject()).isEqualTo("testSubject");
-        assertThat(message.getAllRecipients()[0]).hasToString("john.doe@example.com");
-        assertThat(message.getFrom()[0]).hasToString(jHipsterProperties.getMail().getFrom());
-        assertThat(message.getContent()).isInstanceOf(String.class);
-        assertThat(message.getContent()).hasToString("testContent");
-        assertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
-    }
-
-    @Test
-    void testSendMultipartEmail() throws Exception {
-        mailService.sendEmail("john.doe@example.com", "testSubject", "testContent", true, false);
-        verify(javaMailSender).send(messageCaptor.capture());
-        MimeMessage message = messageCaptor.getValue();
-        MimeMultipart mp = (MimeMultipart) message.getContent();
-        MimeBodyPart part = (MimeBodyPart) ((MimeMultipart) mp.getBodyPart(0).getContent()).getBodyPart(0);
-        ByteArrayOutputStream aos = new ByteArrayOutputStream();
-        part.writeTo(aos);
-        assertThat(message.getSubject()).isEqualTo("testSubject");
-        assertThat(message.getAllRecipients()[0]).hasToString("john.doe@example.com");
-        assertThat(message.getFrom()[0]).hasToString(jHipsterProperties.getMail().getFrom());
-        assertThat(message.getContent()).isInstanceOf(Multipart.class);
-        assertThat(aos).hasToString("\r\ntestContent");
-        assertThat(part.getDataHandler().getContentType()).isEqualTo("text/plain; charset=UTF-8");
-    }
-
-    @Test
-    void testSendMultipartHtmlEmail() throws Exception {
-        mailService.sendEmail("john.doe@example.com", "testSubject", "testContent", true, true);
-        verify(javaMailSender).send(messageCaptor.capture());
-        MimeMessage message = messageCaptor.getValue();
-        MimeMultipart mp = (MimeMultipart) message.getContent();
-        MimeBodyPart part = (MimeBodyPart) ((MimeMultipart) mp.getBodyPart(0).getContent()).getBodyPart(0);
-        ByteArrayOutputStream aos = new ByteArrayOutputStream();
-        part.writeTo(aos);
-        assertThat(message.getSubject()).isEqualTo("testSubject");
-        assertThat(message.getAllRecipients()[0]).hasToString("john.doe@example.com");
-        assertThat(message.getFrom()[0]).hasToString(jHipsterProperties.getMail().getFrom());
-        assertThat(message.getContent()).isInstanceOf(Multipart.class);
-        assertThat(aos).hasToString("\r\ntestContent");
-        assertThat(part.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
-    }
-
-    @Test
-    void testSendEmailFromTemplate() throws Exception {
-        User user = new User();
-        user.setLogin("john");
-        user.setEmail("john.doe@example.com");
-        user.setLangKey("en");
-        mailService.sendEmailFromTemplate(user, "mail/testEmail", "email.test.title");
-        verify(javaMailSender).send(messageCaptor.capture());
-        MimeMessage message = messageCaptor.getValue();
-        assertThat(message.getSubject()).isEqualTo("test title");
-        assertThat(message.getAllRecipients()[0]).hasToString(user.getEmail());
-        assertThat(message.getFrom()[0]).hasToString(jHipsterProperties.getMail().getFrom());
-        assertThat(message.getContent().toString()).isEqualToNormalizingNewlines("<html>test title, http://127.0.0.1:8080, john</html>\n");
-        assertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
-    }
-
-    @Test
-    void testSendActivationEmail() throws Exception {
-        User user = new User();
-        user.setLangKey(Constants.DEFAULT_LANGUAGE);
-        user.setLogin("john");
-        user.setEmail("john.doe@example.com");
-        mailService.sendActivationEmail(user);
-        verify(javaMailSender).send(messageCaptor.capture());
-        MimeMessage message = messageCaptor.getValue();
-        assertThat(message.getAllRecipients()[0]).hasToString(user.getEmail());
-        assertThat(message.getFrom()[0]).hasToString(jHipsterProperties.getMail().getFrom());
-        assertThat(message.getContent().toString()).isNotEmpty();
-        assertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
-    }
-
-    @Test
-    void testCreationEmail() throws Exception {
-        User user = new User();
-        user.setLangKey(Constants.DEFAULT_LANGUAGE);
-        user.setLogin("john");
-        user.setEmail("john.doe@example.com");
-        mailService.sendCreationEmail(user);
-        verify(javaMailSender).send(messageCaptor.capture());
-        MimeMessage message = messageCaptor.getValue();
-        assertThat(message.getAllRecipients()[0]).hasToString(user.getEmail());
-        assertThat(message.getFrom()[0]).hasToString(jHipsterProperties.getMail().getFrom());
-        assertThat(message.getContent().toString()).isNotEmpty();
-        assertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
-    }
-
-    @Test
-    void testSendPasswordResetMail() throws Exception {
-        User user = new User();
-        user.setLangKey(Constants.DEFAULT_LANGUAGE);
-        user.setLogin("john");
-        user.setEmail("john.doe@example.com");
-        mailService.sendPasswordResetMail(user);
-        verify(javaMailSender).send(messageCaptor.capture());
-        MimeMessage message = messageCaptor.getValue();
-        assertThat(message.getAllRecipients()[0]).hasToString(user.getEmail());
-        assertThat(message.getFrom()[0]).hasToString(jHipsterProperties.getMail().getFrom());
-        assertThat(message.getContent().toString()).isNotEmpty();
-        assertThat(message.getDataHandler().getContentType()).isEqualTo("text/html;charset=UTF-8");
-    }
-
-    @Test
-    void testSendEmailWithException() {
-        doThrow(MailSendException.class).when(javaMailSender).send(any(MimeMessage.class));
-        try {
-            mailService.sendEmail("john.doe@example.com", "testSubject", "testContent", false, false);
-        } catch (Exception e) {
-            fail("Exception shouldn't have been thrown");
-        }
-    }
-
-    @Test
-    void testSendLocalizedEmailForAllSupportedLanguages() throws Exception {
-        User user = new User();
-        user.setLogin("john");
-        user.setEmail("john.doe@example.com");
-        for (String langKey : languages) {
-            user.setLangKey(langKey);
-            mailService.sendEmailFromTemplate(user, "mail/testEmail", "email.test.title");
-            verify(javaMailSender, atLeastOnce()).send(messageCaptor.capture());
-            MimeMessage message = messageCaptor.getValue();
-
-            String propertyFilePath = "i18n/messages_" + getJavaLocale(langKey) + ".properties";
-            URL resource = this.getClass().getClassLoader().getResource(propertyFilePath);
-            File file = new File(new URI(resource.getFile()).getPath());
-            Properties properties = new Properties();
-            properties.load(new InputStreamReader(new FileInputStream(file), Charset.forName("UTF-8")));
-
-            String emailTitle = (String) properties.get("email.test.title");
-            assertThat(message.getSubject()).isEqualTo(emailTitle);
-            assertThat(message.getContent().toString())
-                .isEqualToNormalizingNewlines("<html>" + emailTitle + ", http://127.0.0.1:8080, john</html>\n");
-        }
-    }
-
-    /**
-     * Convert a lang key to the Java locale.
-     */
-    private String getJavaLocale(String langKey) {
-        String javaLangKey = langKey;
-        Matcher matcher2 = PATTERN_LOCALE_2.matcher(langKey);
-        if (matcher2.matches()) {
-            javaLangKey = matcher2.group(1) + "_" + matcher2.group(2).toUpperCase();
-        }
-        Matcher matcher3 = PATTERN_LOCALE_3.matcher(langKey);
-        if (matcher3.matches()) {
-            javaLangKey = matcher3.group(1) + "_" + matcher3.group(2) + "_" + matcher3.group(3).toUpperCase();
-        }
-        return javaLangKey;
-    }
-}
diff --git a/pamapi/src/test/java/com/pollex/pam/service/UserServiceIT.java b/pamapi/src/test/java/com/pollex/pam/service/UserServiceIT.java
deleted file mode 100644
index 9aa8c13..0000000
--- a/pamapi/src/test/java/com/pollex/pam/service/UserServiceIT.java
+++ /dev/null
@@ -1,185 +0,0 @@
-package com.pollex.pam.service;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.mockito.Mockito.when;
-
-import com.pollex.pam.IntegrationTest;
-import com.pollex.pam.config.Constants;
-import com.pollex.pam.domain.User;
-import com.pollex.pam.repository.UserRepository;
-import com.pollex.pam.service.dto.AdminUserDTO;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.temporal.ChronoUnit;
-import java.util.List;
-import java.util.Optional;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.mock.mockito.MockBean;
-import org.springframework.data.auditing.AuditingHandler;
-import org.springframework.data.auditing.DateTimeProvider;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.transaction.annotation.Transactional;
-import tech.jhipster.security.RandomUtil;
-
-/**
- * Integration tests for {@link UserService}.
- */
-@IntegrationTest
-@Transactional
-class UserServiceIT {
-
-    private static final String DEFAULT_LOGIN = "johndoe";
-
-    private static final String DEFAULT_EMAIL = "johndoe@localhost";
-
-    private static final String DEFAULT_FIRSTNAME = "john";
-
-    private static final String DEFAULT_LASTNAME = "doe";
-
-    private static final String DEFAULT_IMAGEURL = "http://placehold.it/50x50";
-
-    private static final String DEFAULT_LANGKEY = "dummy";
-
-    @Autowired
-    private UserRepository userRepository;
-
-    @Autowired
-    private UserService userService;
-
-    @Autowired
-    private AuditingHandler auditingHandler;
-
-    @MockBean
-    private DateTimeProvider dateTimeProvider;
-
-    private User user;
-
-    @BeforeEach
-    public void init() {
-        user = new User();
-        user.setLogin(DEFAULT_LOGIN);
-        user.setPassword(RandomStringUtils.random(60));
-        user.setActivated(true);
-        user.setEmail(DEFAULT_EMAIL);
-        user.setFirstName(DEFAULT_FIRSTNAME);
-        user.setLastName(DEFAULT_LASTNAME);
-        user.setImageUrl(DEFAULT_IMAGEURL);
-        user.setLangKey(DEFAULT_LANGKEY);
-
-        when(dateTimeProvider.getNow()).thenReturn(Optional.of(LocalDateTime.now()));
-        auditingHandler.setDateTimeProvider(dateTimeProvider);
-    }
-
-    @Test
-    @Transactional
-    void assertThatUserMustExistToResetPassword() {
-        userRepository.saveAndFlush(user);
-        Optional<User> maybeUser = userService.requestPasswordReset("invalid.login@localhost");
-        assertThat(maybeUser).isNotPresent();
-
-        maybeUser = userService.requestPasswordReset(user.getEmail());
-        assertThat(maybeUser).isPresent();
-        assertThat(maybeUser.orElse(null).getEmail()).isEqualTo(user.getEmail());
-        assertThat(maybeUser.orElse(null).getResetDate()).isNotNull();
-        assertThat(maybeUser.orElse(null).getResetKey()).isNotNull();
-    }
-
-    @Test
-    @Transactional
-    void assertThatOnlyActivatedUserCanRequestPasswordReset() {
-        user.setActivated(false);
-        userRepository.saveAndFlush(user);
-
-        Optional<User> maybeUser = userService.requestPasswordReset(user.getLogin());
-        assertThat(maybeUser).isNotPresent();
-        userRepository.delete(user);
-    }
-
-    @Test
-    @Transactional
-    void assertThatResetKeyMustNotBeOlderThan24Hours() {
-        Instant daysAgo = Instant.now().minus(25, ChronoUnit.HOURS);
-        String resetKey = RandomUtil.generateResetKey();
-        user.setActivated(true);
-        user.setResetDate(daysAgo);
-        user.setResetKey(resetKey);
-        userRepository.saveAndFlush(user);
-
-        Optional<User> maybeUser = userService.completePasswordReset("johndoe2", user.getResetKey());
-        assertThat(maybeUser).isNotPresent();
-        userRepository.delete(user);
-    }
-
-    @Test
-    @Transactional
-    void assertThatResetKeyMustBeValid() {
-        Instant daysAgo = Instant.now().minus(25, ChronoUnit.HOURS);
-        user.setActivated(true);
-        user.setResetDate(daysAgo);
-        user.setResetKey("1234");
-        userRepository.saveAndFlush(user);
-
-        Optional<User> maybeUser = userService.completePasswordReset("johndoe2", user.getResetKey());
-        assertThat(maybeUser).isNotPresent();
-        userRepository.delete(user);
-    }
-
-    @Test
-    @Transactional
-    void assertThatUserCanResetPassword() {
-        String oldPassword = user.getPassword();
-        Instant daysAgo = Instant.now().minus(2, ChronoUnit.HOURS);
-        String resetKey = RandomUtil.generateResetKey();
-        user.setActivated(true);
-        user.setResetDate(daysAgo);
-        user.setResetKey(resetKey);
-        userRepository.saveAndFlush(user);
-
-        Optional<User> maybeUser = userService.completePasswordReset("johndoe2", user.getResetKey());
-        assertThat(maybeUser).isPresent();
-        assertThat(maybeUser.orElse(null).getResetDate()).isNull();
-        assertThat(maybeUser.orElse(null).getResetKey()).isNull();
-        assertThat(maybeUser.orElse(null).getPassword()).isNotEqualTo(oldPassword);
-
-        userRepository.delete(user);
-    }
-
-    @Test
-    @Transactional
-    void assertThatNotActivatedUsersWithNotNullActivationKeyCreatedBefore3DaysAreDeleted() {
-        Instant now = Instant.now();
-        when(dateTimeProvider.getNow()).thenReturn(Optional.of(now.minus(4, ChronoUnit.DAYS)));
-        user.setActivated(false);
-        user.setActivationKey(RandomStringUtils.random(20));
-        User dbUser = userRepository.saveAndFlush(user);
-        dbUser.setCreatedDate(now.minus(4, ChronoUnit.DAYS));
-        userRepository.saveAndFlush(user);
-        Instant threeDaysAgo = now.minus(3, ChronoUnit.DAYS);
-        List<User> users = userRepository.findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(threeDaysAgo);
-        assertThat(users).isNotEmpty();
-        userService.removeNotActivatedUsers();
-        users = userRepository.findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(threeDaysAgo);
-        assertThat(users).isEmpty();
-    }
-
-    @Test
-    @Transactional
-    void assertThatNotActivatedUsersWithNullActivationKeyCreatedBefore3DaysAreNotDeleted() {
-        Instant now = Instant.now();
-        when(dateTimeProvider.getNow()).thenReturn(Optional.of(now.minus(4, ChronoUnit.DAYS)));
-        user.setActivated(false);
-        User dbUser = userRepository.saveAndFlush(user);
-        dbUser.setCreatedDate(now.minus(4, ChronoUnit.DAYS));
-        userRepository.saveAndFlush(user);
-        Instant threeDaysAgo = now.minus(3, ChronoUnit.DAYS);
-        List<User> users = userRepository.findAllByActivatedIsFalseAndActivationKeyIsNotNullAndCreatedDateBefore(threeDaysAgo);
-        assertThat(users).isEmpty();
-        userService.removeNotActivatedUsers();
-        Optional<User> maybeDbUser = userRepository.findById(dbUser.getId());
-        assertThat(maybeDbUser).contains(dbUser);
-    }
-}
diff --git a/pamapi/src/test/java/com/pollex/pam/service/mapper/UserMapperTest.java b/pamapi/src/test/java/com/pollex/pam/service/mapper/UserMapperTest.java
deleted file mode 100644
index e4514c7..0000000
--- a/pamapi/src/test/java/com/pollex/pam/service/mapper/UserMapperTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.pollex.pam.service.mapper;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import com.pollex.pam.domain.User;
-import com.pollex.pam.service.dto.AdminUserDTO;
-import com.pollex.pam.service.dto.UserDTO;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import org.apache.commons.lang3.RandomStringUtils;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-
-/**
- * Unit tests for {@link UserMapper}.
- */
-class UserMapperTest {
-
-    private static final String DEFAULT_LOGIN = "johndoe";
-    private static final Long DEFAULT_ID = 1L;
-
-    private UserMapper userMapper;
-    private User user;
-    private AdminUserDTO userDto;
-
-    @BeforeEach
-    public void init() {
-        userMapper = new UserMapper();
-        user = new User();
-        user.setLogin(DEFAULT_LOGIN);
-        user.setPassword(RandomStringUtils.random(60));
-        user.setActivated(true);
-        user.setEmail("johndoe@localhost");
-        user.setFirstName("john");
-        user.setLastName("doe");
-        user.setImageUrl("image_url");
-        user.setLangKey("en");
-
-        userDto = new AdminUserDTO(user);
-    }
-
-    @Test
-    void usersToUserDTOsShouldMapOnlyNonNullUsers() {
-        List<User> users = new ArrayList<>();
-        users.add(user);
-        users.add(null);
-
-        List<UserDTO> userDTOS = userMapper.usersToUserDTOs(users);
-
-        assertThat(userDTOS).isNotEmpty().size().isEqualTo(1);
-    }
-
-    @Test
-    void userDTOsToUsersShouldMapOnlyNonNullUsers() {
-        List<AdminUserDTO> usersDto = new ArrayList<>();
-        usersDto.add(userDto);
-        usersDto.add(null);
-
-        List<User> users = userMapper.userDTOsToUsers(usersDto);
-
-        assertThat(users).isNotEmpty().size().isEqualTo(1);
-    }
-
-    @Test
-    void userDTOsToUsersWithAuthoritiesStringShouldMapToUsersWithAuthoritiesDomain() {
-        Set<String> authoritiesAsString = new HashSet<>();
-        authoritiesAsString.add("ADMIN");
-        userDto.setAuthorities(authoritiesAsString);
-
-        List<AdminUserDTO> usersDto = new ArrayList<>();
-        usersDto.add(userDto);
-
-        List<User> users = userMapper.userDTOsToUsers(usersDto);
-
-        assertThat(users).isNotEmpty().size().isEqualTo(1);
-        assertThat(users.get(0).getAuthorities()).isNotNull();
-        assertThat(users.get(0).getAuthorities()).isNotEmpty();
-        assertThat(users.get(0).getAuthorities().iterator().next().getName()).isEqualTo("ADMIN");
-    }
-
-    @Test
-    void userDTOsToUsersMapWithNullAuthoritiesStringShouldReturnUserWithEmptyAuthorities() {
-        userDto.setAuthorities(null);
-
-        List<AdminUserDTO> usersDto = new ArrayList<>();
-        usersDto.add(userDto);
-
-        List<User> users = userMapper.userDTOsToUsers(usersDto);
-
-        assertThat(users).isNotEmpty().size().isEqualTo(1);
-        assertThat(users.get(0).getAuthorities()).isNotNull();
-        assertThat(users.get(0).getAuthorities()).isEmpty();
-    }
-
-    @Test
-    void userDTOToUserMapWithAuthoritiesStringShouldReturnUserWithAuthorities() {
-        Set<String> authoritiesAsString = new HashSet<>();
-        authoritiesAsString.add("ADMIN");
-        userDto.setAuthorities(authoritiesAsString);
-
-        User user = userMapper.userDTOToUser(userDto);
-
-        assertThat(user).isNotNull();
-        assertThat(user.getAuthorities()).isNotNull();
-        assertThat(user.getAuthorities()).isNotEmpty();
-        assertThat(user.getAuthorities().iterator().next().getName()).isEqualTo("ADMIN");
-    }
-
-    @Test
-    void userDTOToUserMapWithNullAuthoritiesStringShouldReturnUserWithEmptyAuthorities() {
-        userDto.setAuthorities(null);
-
-        User user = userMapper.userDTOToUser(userDto);
-
-        assertThat(user).isNotNull();
-        assertThat(user.getAuthorities()).isNotNull();
-        assertThat(user.getAuthorities()).isEmpty();
-    }
-
-    @Test
-    void userDTOToUserMapWithNullUserShouldReturnNull() {
-        assertThat(userMapper.userDTOToUser(null)).isNull();
-    }
-
-    @Test
-    void testUserFromId() {
-        assertThat(userMapper.userFromId(DEFAULT_ID).getId()).isEqualTo(DEFAULT_ID);
-        assertThat(userMapper.userFromId(null)).isNull();
-    }
-}
diff --git a/pamapi/src/test/java/com/pollex/pam/web/rest/AccountResourceIT.java b/pamapi/src/test/java/com/pollex/pam/web/rest/AccountResourceIT.java
index 9ff6565..eace069 100644
--- a/pamapi/src/test/java/com/pollex/pam/web/rest/AccountResourceIT.java
+++ b/pamapi/src/test/java/com/pollex/pam/web/rest/AccountResourceIT.java
@@ -6,17 +6,16 @@
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
 import com.pollex.pam.IntegrationTest;
-import com.pollex.pam.config.Constants;
-import com.pollex.pam.domain.User;
-import com.pollex.pam.repository.AuthorityRepository;
-import com.pollex.pam.repository.UserRepository;
-import com.pollex.pam.security.AuthoritiesConstants;
-import com.pollex.pam.service.UserService;
-import com.pollex.pam.service.dto.AdminUserDTO;
-import com.pollex.pam.service.dto.PasswordChangeDTO;
-import com.pollex.pam.service.dto.UserDTO;
-import com.pollex.pam.web.rest.vm.KeyAndPasswordVM;
-import com.pollex.pam.web.rest.vm.ManagedUserVM;
+import com.pollex.pam.business.config.Constants;
+import com.pollex.pam.business.domain.User;
+import com.pollex.pam.business.repository.AuthorityRepository;
+import com.pollex.pam.business.repository.UserRepository;
+import com.pollex.pam.business.security.AuthoritiesConstants;
+import com.pollex.pam.business.service.UserService;
+import com.pollex.pam.business.service.dto.AdminUserDTO;
+import com.pollex.pam.business.service.dto.PasswordChangeDTO;
+import com.pollex.pam.business.web.vm.KeyAndPasswordVM;
+import com.pollex.pam.business.web.vm.ManagedUserVM;
 import java.time.Instant;
 import java.util.*;
 import org.apache.commons.lang3.RandomStringUtils;
diff --git a/pamapi/src/test/java/com/pollex/pam/web/rest/PublicUserResourceIT.java b/pamapi/src/test/java/com/pollex/pam/web/rest/PublicUserResourceIT.java
index 72ece3d..092b58b 100644
--- a/pamapi/src/test/java/com/pollex/pam/web/rest/PublicUserResourceIT.java
+++ b/pamapi/src/test/java/com/pollex/pam/web/rest/PublicUserResourceIT.java
@@ -6,9 +6,9 @@
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
 import com.pollex.pam.IntegrationTest;
-import com.pollex.pam.domain.User;
-import com.pollex.pam.repository.UserRepository;
-import com.pollex.pam.security.AuthoritiesConstants;
+import com.pollex.pam.business.domain.User;
+import com.pollex.pam.business.repository.UserRepository;
+import com.pollex.pam.business.security.AuthoritiesConstants;
 import javax.persistence.EntityManager;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
diff --git a/pamapi/src/test/java/com/pollex/pam/web/rest/UserJWTControllerIT.java b/pamapi/src/test/java/com/pollex/pam/web/rest/UserJWTControllerIT.java
index 094e9ce..1eda30e 100644
--- a/pamapi/src/test/java/com/pollex/pam/web/rest/UserJWTControllerIT.java
+++ b/pamapi/src/test/java/com/pollex/pam/web/rest/UserJWTControllerIT.java
@@ -10,9 +10,9 @@
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
 import com.pollex.pam.IntegrationTest;
-import com.pollex.pam.domain.User;
-import com.pollex.pam.repository.UserRepository;
-import com.pollex.pam.web.rest.vm.LoginVM;
+import com.pollex.pam.business.domain.User;
+import com.pollex.pam.business.repository.UserRepository;
+import com.pollex.pam.business.web.vm.LoginVM;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
diff --git a/pamapi/src/test/java/com/pollex/pam/web/rest/UserResourceIT.java b/pamapi/src/test/java/com/pollex/pam/web/rest/UserResourceIT.java
index 9efe6d2..b1357ef 100644
--- a/pamapi/src/test/java/com/pollex/pam/web/rest/UserResourceIT.java
+++ b/pamapi/src/test/java/com/pollex/pam/web/rest/UserResourceIT.java
@@ -7,13 +7,13 @@
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
 import com.pollex.pam.IntegrationTest;
-import com.pollex.pam.domain.Authority;
-import com.pollex.pam.domain.User;
-import com.pollex.pam.repository.UserRepository;
-import com.pollex.pam.security.AuthoritiesConstants;
-import com.pollex.pam.service.dto.AdminUserDTO;
-import com.pollex.pam.service.mapper.UserMapper;
-import com.pollex.pam.web.rest.vm.ManagedUserVM;
+import com.pollex.pam.business.domain.Authority;
+import com.pollex.pam.business.domain.User;
+import com.pollex.pam.business.repository.UserRepository;
+import com.pollex.pam.business.security.AuthoritiesConstants;
+import com.pollex.pam.business.service.dto.AdminUserDTO;
+import com.pollex.pam.business.service.mapper.UserMapper;
+import com.pollex.pam.business.web.vm.ManagedUserVM;
 import java.time.Instant;
 import java.util.*;
 import java.util.function.Consumer;
diff --git a/pamapi/src/test/java/com/pollex/pam/web/rest/errors/ExceptionTranslatorIT.java b/pamapi/src/test/java/com/pollex/pam/web/rest/errors/ExceptionTranslatorIT.java
deleted file mode 100644
index 057057c..0000000
--- a/pamapi/src/test/java/com/pollex/pam/web/rest/errors/ExceptionTranslatorIT.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
-import com.pollex.pam.IntegrationTest;
-import org.junit.jupiter.api.Test;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.http.MediaType;
-import org.springframework.security.test.context.support.WithMockUser;
-import org.springframework.test.web.servlet.MockMvc;
-
-/**
- * Integration tests {@link ExceptionTranslator} controller advice.
- */
-@WithMockUser
-@AutoConfigureMockMvc
-@IntegrationTest
-class ExceptionTranslatorIT {
-
-    @Autowired
-    private MockMvc mockMvc;
-
-    @Test
-    void testConcurrencyFailure() throws Exception {
-        mockMvc
-            .perform(get("/api/exception-translator-test/concurrency-failure"))
-            .andExpect(status().isConflict())
-            .andExpect(content().contentType(MediaType.APPLICATION_PROBLEM_JSON))
-            .andExpect(jsonPath("$.message").value(ErrorConstants.ERR_CONCURRENCY_FAILURE));
-    }
-
-    @Test
-    void testMethodArgumentNotValid() throws Exception {
-        mockMvc
-            .perform(post("/api/exception-translator-test/method-argument").content("{}").contentType(MediaType.APPLICATION_JSON))
-            .andExpect(status().isBadRequest())
-            .andExpect(content().contentType(MediaType.APPLICATION_PROBLEM_JSON))
-            .andExpect(jsonPath("$.message").value(ErrorConstants.ERR_VALIDATION))
-            .andExpect(jsonPath("$.fieldErrors.[0].objectName").value("test"))
-            .andExpect(jsonPath("$.fieldErrors.[0].field").value("test"))
-            .andExpect(jsonPath("$.fieldErrors.[0].message").value("must not be null"));
-    }
-
-    @Test
-    void testMissingServletRequestPartException() throws Exception {
-        mockMvc
-            .perform(get("/api/exception-translator-test/missing-servlet-request-part"))
-            .andExpect(status().isBadRequest())
-            .andExpect(content().contentType(MediaType.APPLICATION_PROBLEM_JSON))
-            .andExpect(jsonPath("$.message").value("error.http.400"));
-    }
-
-    @Test
-    void testMissingServletRequestParameterException() throws Exception {
-        mockMvc
-            .perform(get("/api/exception-translator-test/missing-servlet-request-parameter"))
-            .andExpect(status().isBadRequest())
-            .andExpect(content().contentType(MediaType.APPLICATION_PROBLEM_JSON))
-            .andExpect(jsonPath("$.message").value("error.http.400"));
-    }
-
-    @Test
-    void testAccessDenied() throws Exception {
-        mockMvc
-            .perform(get("/api/exception-translator-test/access-denied"))
-            .andExpect(status().isForbidden())
-            .andExpect(content().contentType(MediaType.APPLICATION_PROBLEM_JSON))
-            .andExpect(jsonPath("$.message").value("error.http.403"))
-            .andExpect(jsonPath("$.detail").value("test access denied!"));
-    }
-
-    @Test
-    void testUnauthorized() throws Exception {
-        mockMvc
-            .perform(get("/api/exception-translator-test/unauthorized"))
-            .andExpect(status().isUnauthorized())
-            .andExpect(content().contentType(MediaType.APPLICATION_PROBLEM_JSON))
-            .andExpect(jsonPath("$.message").value("error.http.401"))
-            .andExpect(jsonPath("$.path").value("/api/exception-translator-test/unauthorized"))
-            .andExpect(jsonPath("$.detail").value("test authentication failed!"));
-    }
-
-    @Test
-    void testMethodNotSupported() throws Exception {
-        mockMvc
-            .perform(post("/api/exception-translator-test/access-denied"))
-            .andExpect(status().isMethodNotAllowed())
-            .andExpect(content().contentType(MediaType.APPLICATION_PROBLEM_JSON))
-            .andExpect(jsonPath("$.message").value("error.http.405"))
-            .andExpect(jsonPath("$.detail").value("Request method 'POST' not supported"));
-    }
-
-    @Test
-    void testExceptionWithResponseStatus() throws Exception {
-        mockMvc
-            .perform(get("/api/exception-translator-test/response-status"))
-            .andExpect(status().isBadRequest())
-            .andExpect(content().contentType(MediaType.APPLICATION_PROBLEM_JSON))
-            .andExpect(jsonPath("$.message").value("error.http.400"))
-            .andExpect(jsonPath("$.title").value("test response status"));
-    }
-
-    @Test
-    void testInternalServerError() throws Exception {
-        mockMvc
-            .perform(get("/api/exception-translator-test/internal-server-error"))
-            .andExpect(status().isInternalServerError())
-            .andExpect(content().contentType(MediaType.APPLICATION_PROBLEM_JSON))
-            .andExpect(jsonPath("$.message").value("error.http.500"))
-            .andExpect(jsonPath("$.title").value("Internal Server Error"));
-    }
-}
diff --git a/pamapi/src/test/java/com/pollex/pam/web/rest/errors/ExceptionTranslatorTestController.java b/pamapi/src/test/java/com/pollex/pam/web/rest/errors/ExceptionTranslatorTestController.java
deleted file mode 100644
index 131a99d..0000000
--- a/pamapi/src/test/java/com/pollex/pam/web/rest/errors/ExceptionTranslatorTestController.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package com.pollex.pam.web.rest.errors;
-
-import javax.validation.Valid;
-import javax.validation.constraints.NotNull;
-import org.springframework.dao.ConcurrencyFailureException;
-import org.springframework.http.HttpStatus;
-import org.springframework.security.access.AccessDeniedException;
-import org.springframework.security.authentication.BadCredentialsException;
-import org.springframework.web.bind.annotation.*;
-
-@RestController
-@RequestMapping("/api/exception-translator-test")
-public class ExceptionTranslatorTestController {
-
-    @GetMapping("/concurrency-failure")
-    public void concurrencyFailure() {
-        throw new ConcurrencyFailureException("test concurrency failure");
-    }
-
-    @PostMapping("/method-argument")
-    public void methodArgument(@Valid @RequestBody TestDTO testDTO) {}
-
-    @GetMapping("/missing-servlet-request-part")
-    public void missingServletRequestPartException(@RequestPart String part) {}
-
-    @GetMapping("/missing-servlet-request-parameter")
-    public void missingServletRequestParameterException(@RequestParam String param) {}
-
-    @GetMapping("/access-denied")
-    public void accessdenied() {
-        throw new AccessDeniedException("test access denied!");
-    }
-
-    @GetMapping("/unauthorized")
-    public void unauthorized() {
-        throw new BadCredentialsException("test authentication failed!");
-    }
-
-    @GetMapping("/response-status")
-    public void exceptionWithResponseStatus() {
-        throw new TestResponseStatusException();
-    }
-
-    @GetMapping("/internal-server-error")
-    public void internalServerError() {
-        throw new RuntimeException();
-    }
-
-    public static class TestDTO {
-
-        @NotNull
-        private String test;
-
-        public String getTest() {
-            return test;
-        }
-
-        public void setTest(String test) {
-            this.test = test;
-        }
-    }
-
-    @ResponseStatus(value = HttpStatus.BAD_REQUEST, reason = "test response status")
-    @SuppressWarnings("serial")
-    public static class TestResponseStatusException extends RuntimeException {}
-}

--
Gitblit v1.8.0