diff --git a/src/main/java/org/etsi/osl/tmf/pm628/repo/MeasurementCollectionJobRepository.java b/src/main/java/org/etsi/osl/tmf/pm628/repo/MeasurementCollectionJobRepository.java
index 444e9d0c0a7100a6db058e558bf67220eaca5e0a..244016e6ac5e3a54a9ffb81ea4715469b7877013 100644
--- a/src/main/java/org/etsi/osl/tmf/pm628/repo/MeasurementCollectionJobRepository.java
+++ b/src/main/java/org/etsi/osl/tmf/pm628/repo/MeasurementCollectionJobRepository.java
@@ -1,15 +1,13 @@
 package org.etsi.osl.tmf.pm628.repo;
 
+import java.util.Optional;
 import org.etsi.osl.tmf.pm628.model.ExecutionStateType;
 import org.etsi.osl.tmf.pm628.model.MeasurementCollectionJob;
-import org.springframework.data.repository.CrudRepository;
-import org.springframework.data.repository.PagingAndSortingRepository;
+import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
-import java.util.Optional;
-
 @Repository
-public interface MeasurementCollectionJobRepository extends CrudRepository<MeasurementCollectionJob, Long>, PagingAndSortingRepository<MeasurementCollectionJob, Long> {
+public interface MeasurementCollectionJobRepository extends JpaRepository <MeasurementCollectionJob, Long> {
     Optional<MeasurementCollectionJob> findByUuid(String uuid);
 
     Iterable<MeasurementCollectionJob> findByExecutionState(ExecutionStateType executionState);
diff --git a/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java b/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java
index ada0cd1946fdc115921d8c38800d3f50c1b5b125..4ca0ceaeb4875242189cd57f36867ee9984a4d92 100755
--- a/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java
+++ b/src/main/java/org/etsi/osl/tmf/pm628/reposervices/MeasurementCollectionJobService.java
@@ -6,6 +6,7 @@ import jakarta.validation.Valid;
 import org.etsi.osl.tmf.pm628.api.MeasurementCollectionJobApiRouteBuilderEvents;
 import org.etsi.osl.tmf.pm628.model.*;
 import org.etsi.osl.tmf.pm628.repo.MeasurementCollectionJobRepository;
+import org.etsi.osl.tmf.so641.model.ServiceOrder;
 import org.hibernate.Hibernate;
 import org.hibernate.Session;
 import org.hibernate.SessionFactory;
@@ -15,11 +16,13 @@ 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.Propagation;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import java.nio.charset.StandardCharsets;
+import java.time.OffsetDateTime;
 import java.util.*;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -288,58 +291,63 @@ public class MeasurementCollectionJobService {
       ObjectMapper mapper = new ObjectMapper();
       mapper.registerModule(new Hibernate5JakartaModule());
       String res = mapper.writeValueAsString(mcj);
-      
+      log.debug("=====> MCJObjectMapper {}", res);
       return res;
 
     }
     
 
+    @Transactional
     private MeasurementCollectionJob findMeasurementCollectionJobByUuidEager(String id) {
-      if ( id == null || id.equals("")) {
+      if (id == null || id.equals("")) {
         return null;
-    }
-    Session session = sessionFactory.openSession();
-    Transaction tx = session.beginTransaction();
-    MeasurementCollectionJob s = null;
-    try {
+      }
+      MeasurementCollectionJob s = null;
+      try (Session session = sessionFactory.openSession()) {
+        Transaction tx = session.beginTransaction();
         s = (MeasurementCollectionJob) session.get(MeasurementCollectionJob.class, id);
         if (s == null) {
-            return this.findMeasurementCollectionJobByUuid(id);// last resort
+          log.debug("=====> findMeasurementCollectionJobByUuidEager last resort");
+          return this.findMeasurementCollectionJobByUuid(id);// last resort
         }
 
-        Hibernate.initialize(s.getDataAccessEndpoint() );
-        Hibernate.initialize(s.getFileTransferData() );
-        Hibernate.initialize(s.getPerformanceIndicatorGroupSpecification() );
+        Hibernate.initialize(s.getDataAccessEndpoint());
+        Hibernate.initialize(s.getFileTransferData());
+        Hibernate.initialize(s.getPerformanceIndicatorGroupSpecification());
         Hibernate.initialize(s.getPerformanceIndicatorSpecification());
-        Hibernate.initialize(s.getScheduleDefinition() );
-        Hibernate.initialize(s.getTrackingRecord() );
-        
+        Hibernate.initialize(s.getScheduleDefinition());
+        Hibernate.initialize(s.getTrackingRecord());
+
         tx.commit();
-    } finally {
-        session.close();
-    }
-    
-    return s;
+      } catch (Exception e) {
+        e.printStackTrace();
+      }
+
+      return s;
     }
 
+    @Transactional
     public MeasurementCollectionJob findMeasurementCollectionJobByUuid(String uuid){
         log.debug("MeasurementCollectionJob FIND BY UUID");
         Optional<MeasurementCollectionJob> measurementCollectionJob = measurementCollectionJobRepository.findByUuid(uuid);
         return measurementCollectionJob.orElse(null);
     }
 
+    @Transactional
     public MeasurementCollectionJob createMeasurementCollectionJob(MeasurementCollectionJobFVO measurementCollectionJobFVO){
         log.debug("MeasurementCollectionJob CREATE: {}", measurementCollectionJobFVO);
 
         MeasurementCollectionJobMapper mapper = Mappers.getMapper(MeasurementCollectionJobMapper.class);
         MeasurementCollectionJob mcj = mapper.createMeasurementCollectionJob(measurementCollectionJobFVO);
-
-        mcj = this.measurementCollectionJobRepository.save(mcj);
+        mcj.setCreationTime( OffsetDateTime.now() );
+        mcj.setLastModifiedTime( OffsetDateTime.now());
+        mcj = this.measurementCollectionJobRepository.saveAndFlush(mcj);
         raiseMCJCreateNotification(mcj);
 
         return mcj;
     }
 
+    @Transactional
     public MeasurementCollectionJob updateMeasurementCollectionJob(String uuid, @Valid MeasurementCollectionJobMVO measurementCollectionJobUpdate){
         log.debug("MeasurementCollectionJob UPDATE with UUID: {}", uuid);
 
@@ -352,8 +360,10 @@ public class MeasurementCollectionJobService {
         MeasurementCollectionJobMapper mapper = Mappers.getMapper(MeasurementCollectionJobMapper.class);
         measurementCollectionJob = mapper.updateMeasurementCollectionJob(measurementCollectionJobUpdate, measurementCollectionJob);
 
+        measurementCollectionJob.setLastModifiedTime( OffsetDateTime.now());
         measurementCollectionJob = this.measurementCollectionJobRepository.save(measurementCollectionJob);
 
+        
         // This may be unnecessary since MeasurementCollectionJobMVO doesn't have the executionState attribute
         if ( originalExecutionState!=null) {
           executionStateChanged = !originalExecutionState.equals(measurementCollectionJob.getExecutionState());          
@@ -373,12 +383,12 @@ public class MeasurementCollectionJobService {
         MeasurementCollectionJob measurementCollectionJob = measurementCollectionJobRepository.findByUuid(uuid)
                 .orElseThrow(() -> new IllegalArgumentException("No MeasurementCollectionJob with UUID: " + uuid));
         measurementCollectionJobRepository.delete(measurementCollectionJob);
-
         raiseMCJDeleteNotification(measurementCollectionJob);
 
         return null;
     }
 
+    @Transactional(propagation = Propagation.REQUIRES_NEW)
     private void raiseMCJCreateNotification(MeasurementCollectionJob mcj){
         // Create the event payload
         MeasurementCollectionJobRef ref = new MeasurementCollectionJobRef();
@@ -399,6 +409,7 @@ public class MeasurementCollectionJobService {
         routeBuilderEvents.publishEvent(event, mcj.getUuid());
     }
 
+    @Transactional
     private void raiseMCJAttributeValueChangeNotification(MeasurementCollectionJob mcj){
 
         // Create the event payload
@@ -414,6 +425,7 @@ public class MeasurementCollectionJobService {
         routeBuilderEvents.publishEvent(event, mcj.getUuid());
     }
 
+    @Transactional
     private void raiseMCJExecutionStateChangeNotification(MeasurementCollectionJob mcj){
 
         // Create the event payload
@@ -429,6 +441,7 @@ public class MeasurementCollectionJobService {
         routeBuilderEvents.publishEvent(event, mcj.getUuid());
     }
 
+    @Transactional
     private void raiseMCJDeleteNotification(MeasurementCollectionJob mcj){
 
         // Create the event payload
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 603a244bb1c46059e9a24e2f751a9482536a09e9..894408a4961b66b322c2ecf6a608c4e57844dae8 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -49,10 +49,13 @@ spring:
     username: root
     hikari:
        minimumIdle: 2
-       maximumPoolSize: 40
-       idleTimeout: 120000
-       connectionTimeout: 400000
-       leakDetectionThreshold: 100000
+       maximumPoolSize: 20
+       idleTimeout: 20000
+       idle-timeout: 20000
+       connectionTimeout: 40000
+       leakDetectionThreshold: 30000
+       
+       
   jpa:
     database-platform: org.etsi.osl.tmf.LocalMysqlDialect
     hibernate:
diff --git a/src/test/java/org/etsi/osl/services/api/pm628/MeasurementCollectionJobApiControllerTest.java b/src/test/java/org/etsi/osl/services/api/pm628/MeasurementCollectionJobApiControllerTest.java
index 40a2697c2ed42e1a4e955744fe733cfeca4776c7..a2d93c3c0570e92350d4f6a590cd85235bac0cd3 100644
--- a/src/test/java/org/etsi/osl/services/api/pm628/MeasurementCollectionJobApiControllerTest.java
+++ b/src/test/java/org/etsi/osl/services/api/pm628/MeasurementCollectionJobApiControllerTest.java
@@ -1,5 +1,6 @@
 package org.etsi.osl.services.api.pm628;
 
+import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.io.IOUtils;
@@ -114,6 +115,7 @@ public class MeasurementCollectionJobApiControllerTest {
         assertThat(mcj2.getReportingPeriod()).isEqualTo(mcj.getReportingPeriod());
     }
 
+    
     @WithMockUser(username="osadmin", roles = {"USER","ADMIN"})
     @Test
     public void testCreateMeasurementCollectionJob() throws Exception {
@@ -126,6 +128,39 @@ public class MeasurementCollectionJobApiControllerTest {
         assertThat(mcj.getExecutionState()).isEqualTo(ExecutionStateType.ACKNOWLEDGED);
         assertThat(mcj.getGranularity()).isEqualTo(Granularity.fromValue("g_1mn"));
         assertThat(mcj.getReportingPeriod()).isEqualTo(ReportingPeriod.fromValue("r_1mn"));
+        
+        
+     // Create the event
+        MeasurementCollectionJobRef ref = new MeasurementCollectionJobRef();
+        ref.setId(mcj.getUuid());
+        ref.setHref(mcj.getHref());
+        ref.setName("MeasurementCollectionJob");
+        
+        MeasurementCollectionJobCreateEventPayload payload = new MeasurementCollectionJobCreateEventPayload();
+        payload.setMeasurementCollectionJob(ref);
+
+        MeasurementCollectionJobCreateEvent event = new MeasurementCollectionJobCreateEvent();
+        event.setTitle("MeasurementCollectionJob created");
+        event.setDescription("MeasurementCollectionJob with UUID: " + mcj.getUuid() + " has been created");
+        event.setEvent(payload);
+
+        String apayload = toJsonString(event);
+        
+        MeasurementCollectionJobCreateEvent eventresponse = toJsonObj (apayload, MeasurementCollectionJobCreateEvent.class);
+        assertThat(eventresponse.getEvent().getMeasurementCollectionJob()).isNotNull();
+    }
+    
+
+    static String toJsonString(Object object) throws IOException {
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+        return mapper.writeValueAsString(object);
+    }
+
+    static <T> T toJsonObj(String content, Class<T> valueType)  throws IOException {
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
+        return mapper.readValue( content, valueType);
     }
 
     @WithMockUser(username="osadmin", roles = {"USER","ADMIN"})