diff --git a/README.md b/README.md
index 7f6dc37b97abce24279b100c2e80cb521d735ab9..78b616796ccbb5347f0337738561be22dab59a23 100644
--- a/README.md
+++ b/README.md
@@ -1,14 +1,21 @@
 # Project fr.univtln.bruno.samples/jee9.1
 
-Steps to run this project:
+## Steps to run this project
 
 1. COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1  docker-compose  up --build -d
 2. Visit 
-   1. curl http://localhost:8080/jee9.1/resources/sample
-   2. curl http://localhost:8080/jee9.1/resources/sample/hello
-   3. curl http://localhost:8080/jee9.1/resources/sample/dao1
-   4. curl http://localhost:8080/jee9.1/resources/sample/dao2
+   1. curl http://localhost:8080/restApp-1.0-SNAPSHOT/resources/sample
+   2. curl http://localhost:8080/restApp-1.0-SNAPSHOT/resources/sample/hello
+   3. curl http://localhost:8080/restApp-1.0-SNAPSHOT/resources/sample/main
+   4. curl http://localhost:8080/restApp-1.0-SNAPSHOT/resources/sample/persons
+   5. curl  -H "Content-Type: application/json" \
+      -X POST \
+      -d '{"name":"Jeanne"}'  \
+      http://localhost:8080/restApp-1.0-SNAPSHOT/resources/sample/persons
+   6. curl http://localhost:8080/restApp-1.0-SNAPSHOT/resources/sample/persons/843c8236-6c6b-450e-9aa3-211a9b897403
+   7. curl -H "Accept: text/xml" http://localhost:8080/restApp-1.0-SNAPSHOT/resources/sample/persons
+## Import "real" certificate
 
-openssl x509 -outform der -in localhost.pem -out localhost.der
-keytool -import -noprompt -trustcacerts -storepass storepass -alias localhost -keystore mycert-pub.jks -file localhost.der
+  openssl x509 -outform der -in localhost.pem -out localhost.der
+  keytool -import -noprompt -trustcacerts -storepass storepass -alias localhost -keystore mycert-pub.jks -file localhost.der
 
diff --git a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/DAO2.java b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/DAO2.java
deleted file mode 100644
index dd55a1af9d68fcb4675d92759aaf9c41e27556a2..0000000000000000000000000000000000000000
--- a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/DAO2.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package fr.univtln.bruno.samples.jee91.dao;
-
-import jakarta.inject.Inject;
-import jakarta.persistence.EntityManager;
-
-import java.util.List;
-
-public class DAO2 {
-    private EntityManager entityManager;
-
-    @Inject
-    public DAO2(@H2Database EntityManager entityManager) {
-        this.entityManager = entityManager;
-    }
-
-    public List<Person> findAll() {
-        return entityManager.createNamedQuery("Person.findAll").getResultList();
-    }
-
-}
diff --git a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/DAO1.java b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/MainDAO.java
similarity index 95%
rename from dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/DAO1.java
rename to dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/MainDAO.java
index 9b605d5d973012d0b8dbe33eaa60c0c68d327b88..20d2e232c30d20d0a4691050a05f01abe1a70f97 100644
--- a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/DAO1.java
+++ b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/MainDAO.java
@@ -7,7 +7,7 @@ import jakarta.persistence.PersistenceUnit;
 
 import java.util.Map;
 
-public class DAO1 {
+public class MainDAO {
 
     @PersistenceUnit(unitName="myappPU")
     EntityManagerFactory entityManagerFactory;
diff --git a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/Person.java b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/Person.java
deleted file mode 100644
index 33a2438bc411f3c777b8bdc3fb9fd5b03a944481..0000000000000000000000000000000000000000
--- a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/Person.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package fr.univtln.bruno.samples.jee91.dao;
-
-import jakarta.persistence.Entity;
-import jakarta.persistence.GeneratedValue;
-import jakarta.persistence.Id;
-
-@Entity
-public class Person {
-    @Id
-    @GeneratedValue
-    long id;
-
-    private String name;
-}
diff --git a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/PersonDAO.java b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/PersonDAO.java
new file mode 100644
index 0000000000000000000000000000000000000000..f05f5a5ca1b4c59901d899a33eae690ed9409b71
--- /dev/null
+++ b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/PersonDAO.java
@@ -0,0 +1,31 @@
+package fr.univtln.bruno.samples.jee91.dao;
+
+import fr.univtln.bruno.samples.jee91.dao.entitymanagersproducers.H2Database;
+import jakarta.inject.Inject;
+import jakarta.persistence.EntityManager;
+
+import java.util.List;
+import java.util.UUID;
+
+public class PersonDAO {
+    private EntityManager entityManager;
+
+    @Inject
+    public PersonDAO(@H2Database EntityManager entityManager) {
+        this.entityManager = entityManager;
+    }
+
+    public List<Person> findAll() {
+        return entityManager.createNamedQuery("Person.findAll").getResultList();
+    }
+
+    public UUID persist(Person person) {
+        entityManager.persist(person);
+        return person.getUuid();
+    }
+
+    public Person findByUUID(UUID uuid) {
+        return entityManager.createNamedQuery("Person.findByUUID", Person.class).setParameter("uuid",uuid).getSingleResult();
+    }
+
+}
diff --git a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/EntityManagerProducer.java b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/entitymanagersproducers/EntityManagerProducer.java
similarity index 81%
rename from dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/EntityManagerProducer.java
rename to dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/entitymanagersproducers/EntityManagerProducer.java
index e4cc76e73be4692dc0c542430b4a19cb406f7d53..d6645febbaa6d733363ac59c5c71ccf63776c63d 100644
--- a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/EntityManagerProducer.java
+++ b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/entitymanagersproducers/EntityManagerProducer.java
@@ -1,4 +1,4 @@
-package fr.univtln.bruno.samples.jee91.dao;
+package fr.univtln.bruno.samples.jee91.dao.entitymanagersproducers;
 
 import jakarta.enterprise.inject.Produces;
 import jakarta.persistence.EntityManager;
diff --git a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/H2Database.java b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/entitymanagersproducers/H2Database.java
similarity index 84%
rename from dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/H2Database.java
rename to dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/entitymanagersproducers/H2Database.java
index baef67cb4320cc3854f476ee6e38a9e25afe0c34..698f6074b6299f470f5aa2c612fb61d992f6de09 100644
--- a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/H2Database.java
+++ b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/entitymanagersproducers/H2Database.java
@@ -1,4 +1,4 @@
-package fr.univtln.bruno.samples.jee91.dao;
+package fr.univtln.bruno.samples.jee91.dao.entitymanagersproducers;
 
 import jakarta.inject.Qualifier;
 
diff --git a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/PostgreSQLDatabase.java b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/entitymanagersproducers/PostgreSQLDatabase.java
similarity index 84%
rename from dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/PostgreSQLDatabase.java
rename to dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/entitymanagersproducers/PostgreSQLDatabase.java
index 81776b59babfa1e7ec00e69ee143e30e337bea51..ce389e38d13aee67b5ccc8e10d2f09b31e0cb062 100644
--- a/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/PostgreSQLDatabase.java
+++ b/dao/src/main/java/fr/univtln/bruno/samples/jee91/dao/entitymanagersproducers/PostgreSQLDatabase.java
@@ -1,4 +1,4 @@
-package fr.univtln.bruno.samples.jee91.dao;
+package fr.univtln.bruno.samples.jee91.dao.entitymanagersproducers;
 
 import jakarta.inject.Qualifier;
 
diff --git a/entites/pom.xml b/entites/pom.xml
index 897e951ef087dc09b1506d3c2bfaf01ea60c3d61..f21f6b1e11046acc206068def224850aa9319697 100644
--- a/entites/pom.xml
+++ b/entites/pom.xml
@@ -15,6 +15,10 @@
             <groupId>jakarta.platform</groupId>
             <artifactId>jakarta.jakartaee-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+        </dependency>
     </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/entites/src/main/java/fr/univtln/bruno/samples/jee91/dao/Person.java b/entites/src/main/java/fr/univtln/bruno/samples/jee91/dao/Person.java
index c7cf3068e8db97e0b33a94d32ea0781cc0342126..2b85888364a51ab6761879e6b7e83f556a2fdd58 100644
--- a/entites/src/main/java/fr/univtln/bruno/samples/jee91/dao/Person.java
+++ b/entites/src/main/java/fr/univtln/bruno/samples/jee91/dao/Person.java
@@ -1,21 +1,41 @@
 package fr.univtln.bruno.samples.jee91.dao;
 
+import jakarta.json.bind.annotation.JsonbTransient;
 import jakarta.persistence.*;
 import jakarta.xml.bind.annotation.XmlRootElement;
+import lombok.AccessLevel;
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.FieldDefaults;
 
+import java.util.UUID;
+
+@Table(name = "PERSON")
 @Entity
+@Getter
+@Setter
 @NamedQueries({
         @NamedQuery(name = "Person.findAll",
                 query = "select p from Person p"),
         @NamedQuery(
                 name = "Person.findAllOrderedByName",
-                query = "SELECT p FROM Person p ORDER BY p.name")
+                query = "SELECT p FROM Person p ORDER BY p.name"),
+        @NamedQuery(
+                name = "Person.findByUUID",
+                query = "SELECT p FROM Person p WHERE p.uuid=:uuid")
 })
 @XmlRootElement
+@FieldDefaults(level = AccessLevel.PRIVATE)
 public class Person {
     @Id
     @GeneratedValue(strategy = GenerationType.IDENTITY)
+    @Column(name = "ID")
+    @JsonbTransient
     long id;
 
-    private String name;
+    @Column(name = "NAME")
+    String name;
+
+    @Column(name = "UUID", updatable = false, nullable = false, unique = true)
+    UUID uuid = UUID.randomUUID();
 }
diff --git a/restApp/src/main/java/fr/univtln/bruno/samples/jee91/rs/SampleResource.java b/restApp/src/main/java/fr/univtln/bruno/samples/jee91/rs/SampleResource.java
index 08647b5a52707b2bfa7e0905d6e050bd5461d771..d0feb963ef9d65a0055969cff4203d3647940060 100644
--- a/restApp/src/main/java/fr/univtln/bruno/samples/jee91/rs/SampleResource.java
+++ b/restApp/src/main/java/fr/univtln/bruno/samples/jee91/rs/SampleResource.java
@@ -1,23 +1,25 @@
 package fr.univtln.bruno.samples.jee91.rs;
 
 
-import fr.univtln.bruno.samples.jee91.dao.DAO1;
-import fr.univtln.bruno.samples.jee91.dao.DAO2;
+import fr.univtln.bruno.samples.jee91.dao.MainDAO;
 import fr.univtln.bruno.samples.jee91.dao.Person;
+import fr.univtln.bruno.samples.jee91.dao.PersonDAO;
 import fr.univtln.bruno.samples.jee91.ejb.Hello;
 import fr.univtln.bruno.samples.jee91.ejb.qualifiers.SpokenLanguage;
 import jakarta.inject.Inject;
-import jakarta.ws.rs.GET;
-import jakarta.ws.rs.Path;
-import jakarta.ws.rs.Produces;
+import jakarta.transaction.Transactional;
+import jakarta.ws.rs.*;
 import jakarta.ws.rs.core.MediaType;
 import jakarta.ws.rs.core.Response;
 import org.eclipse.microprofile.config.inject.ConfigProperty;
 
 import java.util.List;
 import java.util.Map;
+import java.util.UUID;
 
 @Path("sample")
+//@Stateless
+@Produces({MediaType.APPLICATION_JSON,MediaType.TEXT_XML})
 public class SampleResource {
 
     @Inject
@@ -25,10 +27,10 @@ public class SampleResource {
     Hello hello;
 
     @Inject
-    DAO1 dao1;
+    MainDAO mainDAO;
 
     @Inject
-    DAO2 dao2;
+    PersonDAO personDAO;
 
     @Inject
     @ConfigProperty(name = "message")
@@ -46,16 +48,29 @@ public class SampleResource {
     }
 
     @GET
-    @Path("dao1")
-    @Produces(MediaType.APPLICATION_JSON)
-    public Map<String, Object> dao1() {
-        return dao1.getMetadata();
+    @Path("main")
+    public Map<String, Object> mainGetMetadata() {
+        return mainDAO.getMetadata();
     }
 
     @GET
-    @Path("dao2")
-    @Produces(MediaType.APPLICATION_JSON)
-    public List<Person> dao2() {
-        return dao2.findAll();
+    @Path("persons")
+    public List<Person> personsFindAll() {
+        return personDAO.findAll();
     }
+
+    @GET
+    @Path("persons/{uuid}")
+    public Person personsFind(@PathParam("uuid") UUID uuid) {
+        return personDAO.findByUUID(uuid);
+    }
+
+    @Transactional
+    @POST
+    @Path("persons")
+    @Consumes(MediaType.APPLICATION_JSON)
+    public UUID personsPersist(Person person) {
+        return personDAO.persist(person);
+    }
+
 }
diff --git a/restApp/src/main/resources/insert.sql b/restApp/src/main/resources/insert.sql
index 4f6d3cd5fa7b13227900babb897df9d5672f3bf3..e74e7ffef4c148ef8820cf85f012ce24599f7e1f 100644
--- a/restApp/src/main/resources/insert.sql
+++ b/restApp/src/main/resources/insert.sql
@@ -1,4 +1,4 @@
-INSERT INTO "public"."person" ("name") VALUES ('pierre');
-INSERT INTO "public"."person" ("name") VALUES ('Marie');
-INSERT INTO "public"."person" ("name") VALUES ('jacques');
-INSERT INTO "public"."person" ("name") VALUES ('Annie');
\ No newline at end of file
+INSERT INTO "public"."person" ("name", "uuid") VALUES ('Yves', 'ACED00057372000E6A6176612E7574696C2E55554944BC9903F7986D852F0200024A000C6C65617374536967426974734A000B6D6F7374536967426974737870B25A000916801FE374FCFAC5DCF94C11');
+INSERT INTO "public"."person" ("name", "uuid") VALUES ('Pierre', 'ACED00057372000E6A6176612E7574696C2E55554944BC9903F7986D852F0200024A000C6C65617374536967426974734A000B6D6F7374536967426974737870B8F28F7D3945291756DAC7325DF44938');
+INSERT INTO "public"."person" ("name", "uuid") VALUES ('Marie', 'ACED00057372000E6A6176612E7574696C2E55554944BC9903F7986D852F0200024A000C6C65617374536967426974734A000B6D6F73745369674269747378709AA3211A9B897403843C82366C6B450E');
+INSERT INTO "public"."person" ("name", "uuid") VALUES ('Jeanne', 'ACED00057372000E6A6176612E7574696C2E55554944BC9903F7986D852F0200024A000C6C65617374536967426974734A000B6D6F7374536967426974737870BC1580AEB48C0F0C0B3C82E884AA4C3C');
\ No newline at end of file
diff --git a/wsApp/src/main/java/fr/univtln/bruno/samples/jee91/ws/WSServer.java b/wsApp/src/main/java/fr/univtln/bruno/samples/jee91/ws/WSServer.java
index ae8b211faf2d3e32e0fc03e2ff3fcf5b02c4a79a..eacbdf6085d1d708af0a5e9b48bcf2aca643c092 100644
--- a/wsApp/src/main/java/fr/univtln/bruno/samples/jee91/ws/WSServer.java
+++ b/wsApp/src/main/java/fr/univtln/bruno/samples/jee91/ws/WSServer.java
@@ -1,6 +1,6 @@
 package fr.univtln.bruno.samples.jee91.ws;
 
-import fr.univtln.bruno.samples.jee91.dao.DAO1;
+import fr.univtln.bruno.samples.jee91.dao.MainDAO;
 import fr.univtln.bruno.samples.jee91.ejb.Hello;
 import fr.univtln.bruno.samples.jee91.ejb.qualifiers.SpokenLanguage;
 import jakarta.enterprise.context.ApplicationScoped;
@@ -25,7 +25,7 @@ public class WSServer {
     Hello hello;
 
     @Inject
-    DAO1 dao1;
+    MainDAO dao1;
 
     @OnOpen
     public void onOpen(Session session) throws EncodeException, IOException {
diff --git a/wsApp/src/main/webapp/WEB-INF/beans.xml b/wsApp/src/main/webapp/WEB-INF/beans.xml
deleted file mode 100644
index f8e254275530a1d3ce18bae65334cd014bf184c4..0000000000000000000000000000000000000000
--- a/wsApp/src/main/webapp/WEB-INF/beans.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
-       bean-discovery-mode="all">
-</beans>
\ No newline at end of file